shell: Fix crash when restoring focus state during workspace change
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Wed, 7 May 2014 08:57:28 +0000 (11:57 +0300)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 9 May 2014 19:51:28 +0000 (12:51 -0700)
The check to avoid calling weston_keyboard_set_focus() for a seat that
didn't have a keyboard in restore_focus_state() was cheking the wrong
seat (the one from the previous loop). That caused a crash when
switching workspaces if there was an extra seat that didn't have a
keyboard.

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

desktop-shell/shell.c

index fac3120..ea7b3cd 100644 (file)
@@ -731,7 +731,7 @@ restore_focus_state(struct desktop_shell *shell, struct workspace *ws)
        wl_list_for_each_safe(seat, next_seat, &pending_seat_list, link) {
                wl_list_insert(&shell->compositor->seat_list, &seat->link);
 
-               if (state->seat->keyboard == NULL)
+               if (seat->keyboard == NULL)
                        continue;
 
                weston_keyboard_set_focus(seat->keyboard, NULL);