keyboard: Fix leak when destroying ds_keyboard 96/279196/2
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 3 Aug 2022 04:35:13 +0000 (13:35 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 3 Aug 2022 08:59:55 +0000 (08:59 +0000)
Change-Id: I04f6446697d96ac023b23b9e1634580444c384a8

src/keyboard.c

index 72467ee..30668c4 100644 (file)
@@ -260,6 +260,15 @@ ds_keyboard_init(struct ds_keyboard *keyboard,
 void
 ds_keyboard_destroy(struct ds_keyboard *keyboard)
 {
+    wl_signal_emit(&keyboard->events.destroy, keyboard);
+
+    if (keyboard->keymap) {
+        close(keyboard->keymap_fd);
+        free(keyboard->keymap_string);
+        xkb_state_unref(keyboard->xkb_state);
+        xkb_keymap_unref(keyboard->keymap);
+    }
+
     if (keyboard->iface && keyboard->iface->destroy)
         keyboard->iface->destroy(keyboard);
     else