shell: Only assign focus on touch if there is a touch focus surface
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 3 Jan 2014 07:00:11 +0000 (23:00 -0800)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 3 Jan 2014 07:00:11 +0000 (23:00 -0800)
Similar to 7c4f6cc145daf66cd9624f1e70dd5278241f5858, if we don't have
a background image from the desktop-shell client or the touch point
for some other reason doesn't hit a surface we trigger a
segfault as we try to deref the seat->touch->focus NULL pointer.

For touch, another problem could be fudgey calibration that ends up
giving touch coordinates outside the output space.

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

desktop-shell/shell.c

index b3b2b55..f85a269 100644 (file)
@@ -4229,6 +4229,8 @@ touch_to_activate_binding(struct weston_seat *seat, uint32_t time, void *data)
 {
        if (seat->touch->grab != &seat->touch->default_grab)
                return;
+       if (seat->touch->focus == NULL)
+               return;
 
        activate_binding(seat, data, seat->touch->focus->surface);
 }