e_comp_wl: end hwc if buffer transform is changed only when mode of hwc is planes 02/226402/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 24 Feb 2020 08:51:07 +0000 (17:51 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 2 Mar 2020 09:18:14 +0000 (18:18 +0900)
because hwc windows check buffer transform before commit, hwc of ec is ended
if buffer transform of ec can't be display by hwc.

Change-Id: I8f80820d0643f3ccbc11b14f71e086908c2c42fc

src/bin/e_comp_wl.c

index e638fa2018bffedf344ffd05b9e8ca2d20030102..4c084f80e11710290385b2992bb8952843513532 100644 (file)
@@ -2401,6 +2401,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
 
    if (vp->buffer.transform != state->buffer_viewport.buffer.transform)
      {
+        E_Output *eout;
         int transform_change = (4 + state->buffer_viewport.buffer.transform - vp->buffer.transform) & 0x3;
 
         /* when buffer is transformed, we have to apply the new evas-map */
@@ -2413,7 +2414,18 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
         if (transform_change == vp->wait_for_transform_change)
           vp->wait_for_transform_change = 0;
 
-        if (e_comp_is_on_overlay(ec)) e_comp_hwc_client_end(ec, __FUNCTION__);
+        if (ec->zone)
+          {
+             eout = e_output_find(ec->zone->output_id);
+             if (eout && eout->hwc)
+               {
+                  if (e_hwc_policy_get(eout->hwc) == E_HWC_POLICY_PLANES)
+                    {
+                       if (e_comp_is_on_overlay(ec))
+                         e_comp_hwc_client_end(ec, __FUNCTION__);
+                    }
+               }
+          }
      }
 
    ec->comp_data->scaler.buffer_viewport = state->buffer_viewport;