shell: Only assign focus on click if there is a pointer focus surface
authorKristian Høgsberg <krh@bitplanet.net>
Thu, 2 Jan 2014 00:28:32 +0000 (16:28 -0800)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 2 Jan 2014 00:28:32 +0000 (16:28 -0800)
If we don't have a background image from the desktop-shell client or the
pointer for some other reason doesn't have a focus we trigger a
segfault as we try to deref the seat->pointer->focus NULL pointer.

https://bugs.freedesktop.org/show_bug.cgi?id=73066

clients/desktop-shell.c
desktop-shell/shell.c

index 4e7a815..f96dcf1 100644 (file)
@@ -765,7 +765,7 @@ background_configure(void *data,
        struct background *background =
                (struct background *) window_get_user_data(window);
 
-       widget_schedule_resize(background->widget, width, height);
+       widget_schedule_resize(background->widget, width - 256, height);
 }
 
 static void
index 7981099..e22c97f 100644 (file)
@@ -4216,6 +4216,8 @@ click_to_activate_binding(struct weston_seat *seat, uint32_t time, uint32_t butt
 {
        if (seat->pointer->grab != &seat->pointer->default_grab)
                return;
+       if (seat->pointer->focus == NULL)
+               return;
 
        activate_binding(seat, data, seat->pointer->focus->surface);
 }