weston-info: destroy wl_keyboard

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

Signed-off-by: Markus Ongyerth <wl@ongy.net>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/clients/weston-info.c b/clients/weston-info.c
index 6606117..609e270 100644
--- a/clients/weston-info.c
+++ b/clients/weston-info.c
@@ -118,6 +118,7 @@
 	struct wl_seat *seat;
 	struct weston_info *info;
 
+	struct wl_keyboard *keyboard;
 	uint32_t capabilities;
 	char *name;
 
@@ -498,10 +499,8 @@
 		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 @@
 	if (seat->name != NULL)
 		free(seat->name);
 
+	if (seat->keyboard)
+		wl_keyboard_destroy(seat->keyboard);
+
 	wl_list_remove(&seat->global_link);
 }