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); } } } --