From: Markus Ongyerth <[email protected]>

Fixes a memory leak by calling wl_keyboard_destroy on a any keyboard
that was used to listen for events.

Signed-off-by: Markus Ongyerth <[email protected]>
---
 clients/weston-info.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/clients/weston-info.c b/clients/weston-info.c
index d1bdcbde..3dfea7d8 100644
--- a/clients/weston-info.c
+++ b/clients/weston-info.c
@@ -118,6 +118,7 @@ struct seat_info {
        struct wl_seat *seat;
        struct weston_info *info;
 
+       struct wl_keyboard *keyboard;
        uint32_t capabilities;
        char *name;
 
@@ -498,10 +499,8 @@ seat_handle_capabilities(void *data, struct wl_seat 
*wl_seat,
                return;
 
        if (caps & WL_SEAT_CAPABILITY_KEYBOARD) {
-               struct wl_keyboard *keyboard;
-
-               keyboard = wl_seat_get_keyboard(seat->seat);
-               wl_keyboard_add_listener(keyboard, &keyboard_listener,
+               seat->keyboard = wl_seat_get_keyboard(seat->seat);
+               wl_keyboard_add_listener(seat->keyboard, &keyboard_listener,
                                         seat);
 
                seat->info->roundtrip_needed = true;
@@ -531,6 +530,9 @@ destroy_seat_info(void *data)
        if (seat->name != NULL)
                free(seat->name);
 
+       if (seat->keyboard)
+               wl_keyboard_destroy(seat->keyboard);
+
        wl_list_remove(&seat->global_link);
 }
 
-- 
2.17.0

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to