xwayland: Clean up unpaired surfaces
authorKristian Høgsberg <krh@bitplanet.net>
Mon, 7 Apr 2014 17:16:19 +0000 (10:16 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 7 Apr 2014 17:16:19 +0000 (10:16 -0700)
xwayland/window-manager.c

index 7a042e5..699bade 100644 (file)
@@ -681,6 +681,8 @@ weston_wm_create_surface(struct wl_listener *listener, void *data)
                if (window->surface_id ==
                    wl_resource_get_id(surface->resource)) {
                        xserver_map_shell_surface(window, surface);
+                       window->surface_id = 0;
+                       wl_list_remove(&window->link);
                        break;
                }       
 }
@@ -1120,6 +1122,9 @@ weston_wm_window_destroy(struct weston_wm_window *window)
                window->frame_id = XCB_WINDOW_NONE;
        }
 
+       if (window->surface_id)
+               wl_list_remove(&window->link);
+
        hash_table_remove(window->wm->window_hash, window->id);
        free(window);
 }