e_comp_wl_tizen_hwc: send tizen_hwc_commit_feedback in hwc planes policy
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 26 Jul 2022 10:53:50 +0000 (19:53 +0900)
committerJunseok Kim <juns.kim@samsung.com>
Wed, 27 Jul 2022 04:52:54 +0000 (13:52 +0900)
tizen_hwc_commit_feedback cannot be supported in hwc planes policy
becasue module can update tdm_layer and hwc does not aware it.

this patch send tizen_hwc_commit_feedback and print not supported log
because client wait tizen_hwc_commit_feedback.

Change-Id: I41004c4fb7607182154322abd2942f6045c58a17

src/bin/e_comp_wl_tizen_hwc.c

index e2539197f54bef331dda572907c38b437db1f3ca..f55249b0a814920189e1998a9c439facef562cf4 100644 (file)
@@ -81,6 +81,19 @@ _e_comp_wl_tizen_hwc_commit_feedback_cb_timeout(void *data)
    return ECORE_CALLBACK_CANCEL;
 }
 
+static E_Hwc *
+_e_comp_wl_tizen_hwc_client_hwc_get(E_Client *ec)
+{
+   E_Output *output;
+
+   if (!ec->zone) return NULL;
+
+   output = e_output_find(ec->zone->output_id);
+   if (!output) return NULL;
+
+   return output->hwc;
+}
+
 static void
 _e_comp_wl_tizen_hwc_cb_create_commit_feedback(struct wl_client *client,
                                 struct wl_resource *tizen_hwc_resource,
@@ -92,6 +105,7 @@ _e_comp_wl_tizen_hwc_cb_create_commit_feedback(struct wl_client *client,
    E_Comp_Wl_Tizen_Hwc *tizen_hwc;
    E_Comp_Wl_Tizen_Hwc_Commit_Feedback* hwc_commit_feedback;
    E_Hwc_Window_State accepted_state;
+   E_Hwc *hwc;
 
    tizen_hwc = wl_resource_get_user_data(tizen_hwc_resource);
    EINA_SAFETY_ON_NULL_RETURN(tizen_hwc);
@@ -145,6 +159,21 @@ _e_comp_wl_tizen_hwc_cb_create_commit_feedback(struct wl_client *client,
              wl_resource_destroy(hwc_commit_feedback->resource);
           }
      }
+   else
+     {
+        hwc = _e_comp_wl_tizen_hwc_client_hwc_get(ec);
+        if (hwc)
+          {
+             if (e_hwc_policy_get(hwc) == E_HWC_POLICY_PLANES)
+               {
+                  ELOGF("TIZEN-HWC", "Not Supported in hwc planes policy.(%p, %p)",
+                        hwc_commit_feedback->ec, hwc_commit_feedback, hwc_commit_feedback->resource);
+                  tizen_hwc_commit_feedback_send_committed(hwc_commit_feedback->resource,
+                                                           hwc_commit_feedback->serial);
+                  wl_resource_destroy(hwc_commit_feedback->resource);
+               }
+          }
+     }
 }
 
 static const struct tizen_hwc_interface _e_comp_wl_tizen_hwc_implementation = {