e_plane_renderer: allocate reserved tsurface according to output rotation 89/186889/4
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 6 Aug 2018 08:24:21 +0000 (17:24 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 22 Aug 2018 02:59:13 +0000 (02:59 +0000)
Conflicts:
src/bin/e_plane_renderer.c

Change-Id: Iceea0d0f2bbb2742793e64e0fb10ada5174d1263

src/bin/e_plane_renderer.c

index c185c6a..a28bf62 100644 (file)
@@ -1276,6 +1276,8 @@ e_plane_renderer_ec_set(E_Plane_Renderer *renderer, E_Client *ec)
    E_Plane *plane = NULL;
    tbm_surface_queue_h tqueue = NULL;
    E_Plane_Renderer_Client *renderer_client = NULL;
+   int w, h;
+   int output_rotation;
 
    plane = renderer->plane;
    EINA_SAFETY_ON_NULL_RETURN_VAL(plane, EINA_FALSE);
@@ -1293,9 +1295,21 @@ e_plane_renderer_ec_set(E_Plane_Renderer *renderer, E_Client *ec)
      {
         if (!renderer->ee)
           {
+             output_rotation = plane->output->config.rotation;
+             if (output_rotation % 180)
+               {
+                  w = ec->h;
+                  h = ec->w;
+               }
+             else
+               {
+                  w = ec->w;
+                  h = ec->h;
+               }
+
              if (!renderer->tqueue)
                {
-                  tqueue = e_plane_renderer_surface_queue_create(renderer, ec->w, ec->h, plane->buffer_flags);
+                  tqueue = e_plane_renderer_surface_queue_create(renderer, w, h, plane->buffer_flags);
                   EINA_SAFETY_ON_NULL_RETURN_VAL(tqueue, EINA_FALSE);
 
                   if (!e_plane_renderer_surface_queue_set(renderer, tqueue))
@@ -1307,12 +1321,12 @@ e_plane_renderer_ec_set(E_Plane_Renderer *renderer, E_Client *ec)
                }
              else
                {
-                  if (renderer->tqueue_width != ec->w || renderer->tqueue_height != ec->h)
+                  if (renderer->tqueue_width != w || renderer->tqueue_height != h)
                     {
-                       if ((ec->w * ec->h) == (renderer->tqueue_width * renderer->tqueue_height))
-                         tqueue = e_plane_renderer_surface_queue_recreate(renderer, ec->w, ec->h, plane->buffer_flags);
+                       if ((w * h) == (renderer->tqueue_width * renderer->tqueue_height))
+                         tqueue = e_plane_renderer_surface_queue_recreate(renderer, w, h, plane->buffer_flags);
                        else
-                         tqueue = e_plane_renderer_surface_queue_create(renderer, ec->w, ec->h, plane->buffer_flags);
+                         tqueue = e_plane_renderer_surface_queue_create(renderer, w, h, plane->buffer_flags);
 
                        EINA_SAFETY_ON_NULL_RETURN_VAL(tqueue, EINA_FALSE);