xwm: update override-redirect surface's position upon configure_notify

When we receive configure_notify we should update the surface's
position by calling xwayland_api->set_xwayland(). Otherwise some surfaces
like dnd surfaces from xwayland views are "stuck" at one place. When
setting XWAYLAND state though we should always call view_set_position(),
not just the first time we set this state.

Signed-off-by: Ilia Bozhinov <ammen99@gmail.com>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
index 2500853..3e8c4c7 100644
--- a/xwayland/window-manager.c
+++ b/xwayland/window-manager.c
@@ -739,6 +739,8 @@
 {
 	xcb_configure_notify_event_t *configure_notify =
 		(xcb_configure_notify_event_t *) event;
+	const struct weston_desktop_xwayland_interface *xwayland_api =
+		wm->server->compositor->xwayland_interface;
 	struct weston_wm_window *window;
 
 	wm_log("XCB_CONFIGURE_NOTIFY (window %d) %d,%d @ %dx%d%s\n",
@@ -760,6 +762,13 @@
 		if (window->frame)
 			frame_resize_inside(window->frame,
 					    window->width, window->height);
+
+		/* We should check if shsurf has been created because sometimes
+		 * there are races
+		 * (configure_notify is sent before xserver_map_surface) */
+		if (window->shsurf)
+			xwayland_api->set_xwayland(window->shsurf,
+						   window->x, window->y);
 	}
 }