[PATCH weston] exposay: Don't crash if no pointer is present

Derek Foreman derekf at osg.samsung.com
Fri May 22 09:47:20 PDT 2015


If the compositor has never seen a mouse, exposay will crash because
the seat->pointer pointer is NULL.

Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---
 desktop-shell/exposay.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c
index 4b65cbd..78e45fb 100644
--- a/desktop-shell/exposay.c
+++ b/desktop-shell/exposay.c
@@ -519,7 +519,8 @@ exposay_set_inactive(struct desktop_shell *shell)
 	struct weston_seat *seat = shell->exposay.seat;
 
 	weston_keyboard_end_grab(seat->keyboard);
-	weston_pointer_end_grab(seat->pointer);
+	if (seat->pointer_device_count)
+		weston_pointer_end_grab(seat->pointer);
 	if (seat->keyboard->input_method_resource)
 		seat->keyboard->grab = &seat->keyboard->input_method_grab;
 
@@ -570,11 +571,13 @@ exposay_transition_active(struct desktop_shell *shell)
 	weston_keyboard_set_focus(seat->keyboard, NULL);
 
 	shell->exposay.grab_ptr.interface = &exposay_ptr_grab;
-	weston_pointer_start_grab(seat->pointer,
-	                          &shell->exposay.grab_ptr);
-	weston_pointer_set_focus(seat->pointer, NULL,
-			         seat->pointer->x, seat->pointer->y);
-
+	if (seat->pointer_device_count) {
+		weston_pointer_start_grab(seat->pointer,
+		                          &shell->exposay.grab_ptr);
+		weston_pointer_set_focus(seat->pointer, NULL,
+				         seat->pointer->x,
+					 seat->pointer->y);
+	}
 	wl_list_for_each(shell_output, &shell->output_list, link) {
 		enum exposay_layout_state state;
 
-- 
2.1.4



More information about the wayland-devel mailing list