shell: Fix 2 switcher crashes.
In case of no regular window, switcher will crash in switch_next()
due to "next == NULL" and in switcher_destroy() due to
"switcher->current == NULL".
diff --git a/src/shell.c b/src/shell.c
index 765b0a4..b294c20 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1840,6 +1840,9 @@
if (next == NULL)
next = first;
+ if (next == NULL)
+ return;
+
wl_list_remove(&switcher->listener.link);
wl_list_insert(next->surface.resource.destroy_listener_list.prev,
&switcher->listener.link);
@@ -1871,7 +1874,8 @@
weston_surface_damage(surface);
}
- activate(compositor->shell, switcher->current, device, time);
+ if (switcher->current)
+ activate(compositor->shell, switcher->current, device, time);
wl_list_remove(&switcher->listener.link);
wl_input_device_end_keyboard_grab(&device->input_device, time);
free(switcher);