devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6a1a1305b5111df48834afe155df7751e4430608

commit 6a1a1305b5111df48834afe155df7751e4430608
Author: Chris Michael <cpmich...@osg.samsung.com>
Date:   Mon Mar 21 09:29:32 2016 -0400

    evas-wayland-shm: Fix rotation for wayland shm engine
    
    Prior to this fix, window rotation was not operating correctly and the
    surface contents would get rendered at the wrong size and position.
    This patch fixes the engine so that rotation operates properly now.
    
    NB: Tested with the Window States(2) test in elementary
    
    Thanks to shiin for reporting :)
    
    @fix
    
    Signed-off-by: Chris Michael <cpmich...@osg.samsung.com>
---
 src/modules/evas/engines/wayland_shm/evas_outbuf.c | 29 ++++++++++++++++++----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/modules/evas/engines/wayland_shm/evas_outbuf.c 
b/src/modules/evas/engines/wayland_shm/evas_outbuf.c
index 36a0cff..492607a 100644
--- a/src/modules/evas/engines/wayland_shm/evas_outbuf.c
+++ b/src/modules/evas/engines/wayland_shm/evas_outbuf.c
@@ -43,9 +43,20 @@ _evas_outbuf_setup(int w, int h, int rot, Outbuf_Depth 
depth, Eina_Bool alpha, s
      }
 
    /* try to create the outbuf surface */
-   if (!(ob->surface = 
-         _evas_shm_surface_create(disp, shm, surface, w, h, ob->num_buff, 
alpha, compositor_version)))
-     goto surf_err;
+   if ((ob->rotation == 0) || (ob->rotation == 180))
+     {
+        ob->surface =
+          _evas_shm_surface_create(disp, shm, surface, w, h, ob->num_buff,
+                                   alpha, compositor_version);
+        if (!ob->surface) goto surf_err;
+     }
+   else if ((ob->rotation == 90) || (ob->rotation == 270))
+     {
+        ob->surface =
+          _evas_shm_surface_create(disp, shm, surface, h, w, ob->num_buff,
+                                   alpha, compositor_version);
+        if (!ob->surface) goto surf_err;
+     }
 
    eina_array_step_set(&ob->priv.onebuf_regions, sizeof(Eina_Array), 8);
 
@@ -303,8 +314,16 @@ _evas_outbuf_reconfigure(Outbuf *ob, int x, int y, int w, 
int h, int rot, Outbuf
    else
      ob->surface->flags = 0;
 
-   _evas_shm_surface_reconfigure(ob->surface, x, y, w, h, 
-                                 ob->num_buff, ob->surface->flags);
+   if ((ob->rotation == 0) || (ob->rotation == 180))
+     {
+        _evas_shm_surface_reconfigure(ob->surface, x, y, w, h,
+                                      ob->num_buff, ob->surface->flags);
+     }
+   else if ((ob->rotation == 90) || (ob->rotation == 270))
+     {
+        _evas_shm_surface_reconfigure(ob->surface, x, y, h, w,
+                                      ob->num_buff, ob->surface->flags);
+     }
 
    _evas_outbuf_idle_flush(ob);
 }

-- 


Reply via email to