discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ed743dddf05d856a4c69e3ec570bec3bbd838a3e
commit ed743dddf05d856a4c69e3ec570bec3bbd838a3e Author: Mike Blumenkrantz <[email protected]> Date: Fri Oct 7 11:00:08 2016 -0400 ecore-wl2: add internal window flag for determining if opaque/input have been set --- src/lib/ecore_wl2/ecore_wl2_private.h | 3 +++ src/lib/ecore_wl2/ecore_wl2_window.c | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 23d1d58..f7055cf 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -168,6 +168,9 @@ struct _Ecore_Wl2_Window Eina_Bool resizing : 1; Eina_Bool alpha : 1; Eina_Bool transparent : 1; + + Eina_Bool input_set : 1; + Eina_Bool opaque_set : 1; }; struct _Ecore_Wl2_Output diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 5122cb8..cebbba0 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -422,10 +422,12 @@ ecore_wl2_window_show(Ecore_Wl2_Window *window) } } - ecore_wl2_window_input_region_set(window, window->input_rect.x, window->input_rect.x, - window->input_rect.w, window->input_rect.h); - ecore_wl2_window_opaque_region_set(window, window->opaque.x, window->opaque.x, - window->opaque.w, window->opaque.h); + if (window->input_set) + ecore_wl2_window_input_region_set(window, window->input_rect.x, window->input_rect.x, + window->input_rect.w, window->input_rect.h); + if (window->opaque_set) + ecore_wl2_window_opaque_region_set(window, window->opaque.x, window->opaque.x, + window->opaque.w, window->opaque.h); if ((window->type != ECORE_WL2_WINDOW_TYPE_DND) && (window->type != ECORE_WL2_WINDOW_TYPE_NONE)) @@ -634,6 +636,7 @@ ecore_wl2_window_opaque_region_set(Ecore_Wl2_Window *window, int x, int y, int w window->opaque.y = y; window->opaque.w = w; window->opaque.h = h; + window->opaque_set = 1; if ((window->transparent) || (window->alpha)) return; if (!window->surface) return; //surface not created yet @@ -676,6 +679,7 @@ ecore_wl2_window_input_region_set(Ecore_Wl2_Window *window, int x, int y, int w, window->input_rect.y = y; window->input_rect.w = w; window->input_rect.h = h; + window->input_set = 1; if (window->type == ECORE_WL2_WINDOW_TYPE_DND) return; if (!window->surface) return; //surface not created yet --
