e_plane: fix wrong transform of backup buffer 07/251207/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 11 Jan 2021 07:40:58 +0000 (16:40 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 11 Jan 2021 08:18:16 +0000 (17:18 +0900)
Change-Id: If5a28f56a0141a047d7aca3f4ede6cd82a213f83

src/bin/e_plane.c
src/bin/e_plane.h
src/bin/e_plane_renderer.c

index 8c8d8054de29921a200afeac198f4a0791d67f59..6e54564e8cdb47e247cabe426e3888926557f069 100644 (file)
@@ -2043,6 +2043,7 @@ e_plane_fetch(E_Plane *plane)
 {
    tbm_surface_h tsurface = NULL;
    E_Output *output = NULL;
+   E_Comp_Wl_Buffer *buffer = NULL;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(plane, EINA_FALSE);
 
@@ -2087,6 +2088,10 @@ e_plane_fetch(E_Plane *plane)
                     tsurface = _e_plane_surface_from_client_acquire_reserved(plane);
                   else
                     tsurface = _e_plane_surface_from_client_acquire(plane);
+
+                  buffer = _get_comp_wl_buffer(plane->ec);
+                  if (buffer)
+                    plane->buffer_transform = buffer->transform;
                }
              else if (plane->role == E_PLANE_ROLE_CURSOR)
                {
@@ -2141,6 +2146,7 @@ e_plane_fetch(E_Plane *plane)
                return EINA_FALSE;
 
              plane->tsurface = NULL;
+             plane->buffer_transform = 0;
 
              /* set plane info and set tsurface to the plane */
              if (!_e_plane_surface_unset(plane))
index c772dbd263a2d7138062ddc660b440858bc6a804..0b2888e2d22e111622ca88d080556651a7e4da32 100644 (file)
@@ -60,6 +60,7 @@ struct _E_Plane
    tdm_layer            *tlayer;
    tdm_info_layer        info;
    tbm_surface_h         tsurface;
+   int                   buffer_transform;
 
    E_Plane_Renderer     *renderer;
    E_Output             *output;
index 06256522e859731ba3cd78c6077e620fe05ce5fd..994d09dfb3dcfd96d89493299ebd07e0d4e677c6 100644 (file)
@@ -400,6 +400,12 @@ _e_plane_renderer_client_backup_buffer_set(E_Plane_Renderer_Client *renderer_cli
    buffer = _get_comp_wl_buffer(ec);
    if (buffer)
      backup_buffer->transform = buffer->transform;
+   else
+     {
+        if (renderer_client->renderer && renderer_client->renderer->plane)
+          backup_buffer->transform = renderer_client->renderer->plane->buffer_transform;
+     }
+
 
    if (renderer_client->buffer)
      wl_list_remove(&renderer_client->buffer_destroy_listener.link);