summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2017-06-13 12:38:19 -0400
committerChris Michael <cp.michael@samsung.com>2017-06-13 12:57:24 -0400
commit1d453eece4b9813f0a7a58f548e59be63fa95e7a (patch)
tree13fb08bb93e2310ee5f4793584654788fa65507a
parentb678382b8aca530c24801a2f56cb36beb68979fe (diff)
downloadefl-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.c2
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_private.h2
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_window.c16
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);