summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2016-09-21 11:24:47 +0800
committerJonas Ådahl <jadahl@gmail.com>2016-10-11 22:51:54 +0800
commitd639c28e3b87ffea3745ef2c834f0d241c9238fc (patch)
tree56a61e009f328c0eced77428959ff80180e07976
parentc3f7259cbb43d79896855417796966d0b9a38991 (diff)
downloadmutter-d639c28e3b87ffea3745ef2c834f0d241c9238fc.tar.gz
wayland/keyboard: Cleanup xkb state managing
Initialize and cleanup properly in a _init()/_destroy() function pair. https://bugzilla.gnome.org/show_bug.cgi?id=771646
-rw-r--r--src/wayland/meta-wayland-keyboard.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/wayland/meta-wayland-keyboard.c b/src/wayland/meta-wayland-keyboard.c
index fd3248395..6e859640b 100644
--- a/src/wayland/meta-wayland-keyboard.c
+++ b/src/wayland/meta-wayland-keyboard.c
@@ -611,8 +611,6 @@ meta_wayland_keyboard_enable (MetaWaylandKeyboard *keyboard)
wl_list_init (&keyboard->resource_list);
wl_list_init (&keyboard->focus_resource_list);
- keyboard->xkb_info.keymap_fd = -1;
-
keyboard->grab = &keyboard->default_grab;
keyboard->settings = g_settings_new ("org.gnome.desktop.peripherals.keyboard");
@@ -641,6 +639,12 @@ meta_wayland_keyboard_enable (MetaWaylandKeyboard *keyboard)
}
static void
+meta_wayland_xkb_info_init (MetaWaylandXkbInfo *xkb_info)
+{
+ xkb_info->keymap_fd = -1;
+}
+
+static void
meta_wayland_xkb_info_destroy (MetaWaylandXkbInfo *xkb_info)
{
g_clear_pointer (&xkb_info->keymap, xkb_keymap_unref);
@@ -652,7 +656,10 @@ meta_wayland_xkb_info_destroy (MetaWaylandXkbInfo *xkb_info)
xkb_info->keymap_area = NULL;
}
if (xkb_info->keymap_fd >= 0)
- close (xkb_info->keymap_fd);
+ {
+ close (xkb_info->keymap_fd);
+ xkb_info->keymap_fd = -1;
+ }
}
void
@@ -957,6 +964,8 @@ meta_wayland_keyboard_end_grab (MetaWaylandKeyboard *keyboard)
static void
meta_wayland_keyboard_init (MetaWaylandKeyboard *keyboard)
{
+ meta_wayland_xkb_info_init (&keyboard->xkb_info);
+
keyboard->default_grab.interface = &default_keyboard_grab_interface;
keyboard->default_grab.keyboard = keyboard;