diff options
author | Chris Michael <cp.michael@samsung.com> | 2017-06-13 12:38:19 -0400 |
---|---|---|
committer | Chris Michael <cp.michael@samsung.com> | 2017-06-13 12:57:24 -0400 |
commit | 1d453eece4b9813f0a7a58f548e59be63fa95e7a (patch) | |
tree | 13fb08bb93e2310ee5f4793584654788fa65507a | |
parent | b678382b8aca530c24801a2f56cb36beb68979fe (diff) | |
download | efl-1d453eece4b9813f0a7a58f548e59be63fa95e7a.tar.gz |
ecore-wl2: Free auxiliary window hints when we destroy a window
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r-- | src/lib/ecore_wl2/ecore_wl2_display.c | 2 | ||||
-rw-r--r-- | src/lib/ecore_wl2/ecore_wl2_private.h | 2 | ||||
-rw-r--r-- | src/lib/ecore_wl2/ecore_wl2_window.c | 16 |
3 files changed, 16 insertions, 4 deletions
diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c index 999591b533..a1528766c0 100644 --- a/src/lib/ecore_wl2/ecore_wl2_display.c +++ b/src/lib/ecore_wl2/ecore_wl2_display.c @@ -328,7 +328,7 @@ _recovery_timer_add(Ecore_Wl2_Display *ewd) EINA_INLIST_FOREACH_SAFE(window->subsurfs, tmp2, subsurf) _ecore_wl2_subsurf_unmap(subsurf); - _ecore_wl_window_semi_free(window); + _ecore_wl2_window_semi_free(window); window->configure_serial = 0; window->configure_ack = NULL; } diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 3c296afb55..2ae15fe462 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -500,7 +500,7 @@ void _ecore_wl2_subsurf_free(Ecore_Wl2_Subsurface *subsurf); void _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window); void _ecore_wl2_window_www_surface_init(Ecore_Wl2_Window *window); -void _ecore_wl_window_semi_free(Ecore_Wl2_Window *window); +void _ecore_wl2_window_semi_free(Ecore_Wl2_Window *window); void _ecore_wl2_offer_unref(Ecore_Wl2_Offer *offer); diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index e47b6b8c8d..bf4fa1898b 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -5,7 +5,7 @@ #include "ecore_wl2_private.h" void -_ecore_wl_window_semi_free(Ecore_Wl2_Window *window) +_ecore_wl2_window_semi_free(Ecore_Wl2_Window *window) { if (window->zxdg_popup) zxdg_popup_v6_destroy(window->zxdg_popup); window->zxdg_popup = NULL; @@ -518,6 +518,14 @@ _ecore_wl2_window_surface_create(Ecore_Wl2_Window *window) } } +static void +_ecore_wl2_aux_hint_free(Ecore_Wl2_Aux_Hint *ehint) +{ + eina_stringshare_del(ehint->hint); + eina_stringshare_del(ehint->val); + free(ehint); +} + EAPI Ecore_Wl2_Window * ecore_wl2_window_new(Ecore_Wl2_Display *display, Ecore_Wl2_Window *parent, int x, int y, int w, int h) { @@ -632,6 +640,7 @@ ecore_wl2_window_free(Ecore_Wl2_Window *window) Ecore_Wl2_Display *display; Ecore_Wl2_Input *input; Ecore_Wl2_Subsurface *subsurf; + Ecore_Wl2_Aux_Hint *ehint; Eina_Inlist *tmp; EINA_SAFETY_ON_NULL_RETURN(window); @@ -644,11 +653,14 @@ ecore_wl2_window_free(Ecore_Wl2_Window *window) EINA_INLIST_FOREACH_SAFE(window->subsurfs, tmp, subsurf) _ecore_wl2_subsurf_free(subsurf); + EINA_INLIST_FOREACH_SAFE(window->supported_aux_hints, tmp, ehint) + _ecore_wl2_aux_hint_free(ehint); + if (window->uuid && window->surface && window->display->wl.session_recovery) zwp_e_session_recovery_destroy_uuid(window->display->wl.session_recovery, window->surface, window->uuid); - _ecore_wl_window_semi_free(window); + _ecore_wl2_window_semi_free(window); eina_stringshare_replace(&window->uuid, NULL); |