devilhorns pushed a commit to branch efl-1.8.

http://git.enlightenment.org/core/efl.git/commit/?id=88604d545041dc1164002af5ea5cb11d857196d7

commit 88604d545041dc1164002af5ea5cb11d857196d7
Author: Chris Michael <cp.mich...@samsung.com>
Date:   Mon Dec 9 07:32:45 2013 +0000

    Fix opaque windows becoming transparent after hide() then show().
    
    This fixes Phab #T611. Previously, windows which were opaque would
    become transparent after being hidden and then shown. We fix that by a
    call to ecore_wl_window_alpha_set when the window gets shown. This
    patch also brings the wayland_egl hide code more inline with the shm
    hide code by testing if the surface does not match the existing one.
    
    Signed-off-by: Chris Michael <cp.mich...@samsung.com>
---
 .../ecore_evas/engines/wayland/ecore_evas_wayland_egl.c      | 12 ++++++++++--
 .../ecore_evas/engines/wayland/ecore_evas_wayland_shm.c      |  2 ++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index 17512b7..be65619 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -299,13 +299,21 @@ _ecore_evas_wl_show(Ecore_Evas *ee)
    if (wdata->win)
      {
         ecore_wl_window_show(wdata->win);
+        ecore_wl_window_alpha_set(wdata->win, ee->alpha);
         ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
 
         einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas);
         if (einfo)
           {
-             einfo->info.surface = ecore_wl_window_surface_get(wdata->win);
-             evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+             struct wl_surface *surf;
+
+             surf = ecore_wl_window_surface_get(wdata->win);
+             if ((!einfo->info.surface) || (einfo->info.surface != surf))
+               {
+                  einfo->info.surface = surf;
+                  evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                  evas_damage_rectangle_add(ee->evas, 0, 0, ee->w + fw, ee->h 
+ fh);
+               }
           }
      }
 
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
index a7bbd51..0e1de30 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
@@ -292,6 +292,7 @@ _ecore_evas_wl_show(Ecore_Evas *ee)
    if (wdata->win)
      {
         ecore_wl_window_show(wdata->win);
+        ecore_wl_window_alpha_set(wdata->win, ee->alpha);
         ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
 
         einfo = (Evas_Engine_Info_Wayland_Shm *)evas_engine_info_get(ee->evas);
@@ -304,6 +305,7 @@ _ecore_evas_wl_show(Ecore_Evas *ee)
                {
                   einfo->info.wl_surface = surf;
                   evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                  evas_damage_rectangle_add(ee->evas, 0, 0, ee->w + fw, ee->h 
+ fh);
                }
           }
      }

-- 


Reply via email to