[PATCH weston 3/3] compositor: fix a crash on missing keyboard device

Pekka Paalanen ppaalanen at gmail.com
Thu Jun 7 05:07:07 PDT 2012


Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
---
 src/compositor.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index c073d79..e8b7854 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1657,16 +1657,19 @@ weston_surface_activate(struct weston_surface *surface,
 {
 	struct weston_compositor *compositor = seat->compositor;
 
-	wl_keyboard_set_focus(seat->seat.keyboard, &surface->surface);
-	wl_data_device_set_keyboard_focus(&seat->seat);
-
-	if (seat->seat.keyboard->focus_resource) {
-		wl_keyboard_send_modifiers(seat->seat.keyboard->focus_resource,
-					   wl_display_next_serial(compositor->wl_display),
-					   seat->xkb_state.mods_depressed,
-					   seat->xkb_state.mods_latched,
-					   seat->xkb_state.mods_locked,
-					   seat->xkb_state.group);
+	if (seat->seat.keyboard) {
+		wl_keyboard_set_focus(seat->seat.keyboard, &surface->surface);
+		wl_data_device_set_keyboard_focus(&seat->seat);
+
+		if (seat->seat.keyboard->focus_resource) {
+			wl_keyboard_send_modifiers(
+				seat->seat.keyboard->focus_resource,
+				wl_display_next_serial(compositor->wl_display),
+				seat->xkb_state.mods_depressed,
+				seat->xkb_state.mods_latched,
+				seat->xkb_state.mods_locked,
+				seat->xkb_state.group);
+		}
 	}
 
 	wl_signal_emit(&compositor->activate_signal, surface);
-- 
1.7.3.4



More information about the wayland-devel mailing list