From bd41e4626fdcab15e5f0bb9ecd13b9249537fa67 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 24 Jan 2018 16:28:49 -0500 Subject: [PATCH] efl-wl: don't leak xkb mmaps when running under x11 ref a32735e9a7bc537430d155a4af853d498dda2009 --- src/lib/efl_wl/efl_wl.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c index fd02aed44a..4c16eb6c33 100644 --- a/src/lib/efl_wl/efl_wl.c +++ b/src/lib/efl_wl/efl_wl.c @@ -3710,13 +3710,13 @@ seat_keymap_update(Comp_Seat *s) Eina_Tmpstr *file; xkb_mod_mask_t latched = 0, locked = 0; + if (s->kbd.keymap_mem) munmap(s->kbd.keymap_mem, s->kbd.keymap_mem_size); + if (s->kbd.keymap_fd > -1) close(s->kbd.keymap_fd); + #ifdef HAVE_ECORE_X if (!x11_kbd_keymap) { #endif - if (s->kbd.keymap_mem) munmap(s->kbd.keymap_mem, s->kbd.keymap_mem_size); - if (s->kbd.keymap_fd > -1) close(s->kbd.keymap_fd); - if (s->kbd.state) { latched = xkb_state_serialize_mods(s->kbd.state, XKB_STATE_MODS_LATCHED); @@ -4049,9 +4049,16 @@ static void seat_kbd_destroy(Comp_Seat *s) { if (s->kbd.external) return; - if (s->kbd.state) xkb_state_unref(s->kbd.state); - if (s->kbd.keymap) xkb_keymap_unref(s->kbd.keymap); - if (s->kbd.context) xkb_context_unref(s->kbd.context); +#ifdef HAVE_ECORE_X + if (!x11_kbd_keymap) + { +#endif + if (s->kbd.state) xkb_state_unref(s->kbd.state); + if (s->kbd.keymap) xkb_keymap_unref(s->kbd.keymap); + if (s->kbd.context) xkb_context_unref(s->kbd.context); +#ifdef HAVE_ECORE_X + } +#endif if (s->kbd.keymap_mem) munmap(s->kbd.keymap_mem, s->kbd.keymap_mem_size); if (s->kbd.keymap_fd > -1) close(s->kbd.keymap_fd); wl_array_release(&s->kbd.keys);