xwm: Only destroy window frame in unmap_notify if we have one

Based on a patch from Tiago Vignatti <tiago.vignatti@intel.com>.
diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
index 0a31a65..3094601 100644
--- a/src/xwayland/window-manager.c
+++ b/src/xwayland/window-manager.c
@@ -573,14 +573,16 @@
 	if (window->cairo_surface)
 		cairo_surface_destroy(window->cairo_surface);
 
-	xcb_reparent_window(wm->conn, window->id, wm->wm_window, 0, 0);
-	xcb_destroy_window(wm->conn, window->frame_id);
-	weston_wm_window_set_state(window, ICCCM_WITHDRAWN_STATE);
+	if (window->frame_id) {
+		xcb_reparent_window(wm->conn, window->id, wm->wm_window, 0, 0);
+		xcb_destroy_window(wm->conn, window->frame_id);
+		weston_wm_window_set_state(window, ICCCM_WITHDRAWN_STATE);
+		hash_table_remove(wm->window_hash, window->frame_id);
+		window->frame_id = XCB_WINDOW_NONE;
+	}
 
-	window->frame_id = XCB_WINDOW_NONE;
 	if (wm->focus_window == window)
 		wm->focus_window = NULL;
-	hash_table_remove(wm->window_hash, window->frame_id);
 	if (window->surface)
 		wl_list_remove(&window->surface_destroy_listener.link);
 	window->surface = NULL;