desktop-shell: Fix output destroying

Now we properly unregister from the panel/background surface destroy
signals if the output is destroyed first.

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 7bcaa8d..7589586 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -4588,6 +4588,8 @@
 
 	shell_for_each_layer(shell, shell_output_destroy_move_layer, output);
 
+	wl_list_remove(&output_listener->panel_surface_listener.link);
+	wl_list_remove(&output_listener->background_surface_listener.link);
 	wl_list_remove(&output_listener->destroy_listener.link);
 	wl_list_remove(&output_listener->link);
 	free(output_listener);