xwm: Fix transform listener

The coordinate transformation was broken (worked for first output where
output->x/y was 0,0, broke on all other outputs).  We can just use
surface->geometry.x/y directly.  We can't use the full transformation,
the best we can do is to move the X window to the geometry.x/y location.

Get rid of the static old_sx/sy hack as well.
diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
index a18bb0e..3d36f70 100644
--- a/src/xwayland/window-manager.c
+++ b/src/xwayland/window-manager.c
@@ -647,11 +647,7 @@
 	struct weston_wm_window *window = get_wm_window(surface);
 	struct weston_wm *wm =
 		container_of(listener, struct weston_wm, transform_listener);
-	struct weston_output *output = surface->output;
 	uint32_t mask, values[2];
-	float sxf, syf;
-	int sx, sy;
-	static int old_sx = -1, old_sy = -1;
 
 	if (!window || !wm)
 		return;
@@ -659,24 +655,15 @@
 	if (!weston_surface_is_mapped(surface))
 		return;
 
-	weston_surface_to_global_float(surface, output->x, output->y,
-				       &sxf, &syf);
+	if (window->x != surface->geometry.x ||
+	    window->y != surface->geometry.y) {
+		values[0] = surface->geometry.x;
+		values[1] = surface->geometry.y;
+		mask = XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y;
 
-	sx = (int) sxf;
-	sy = (int) syf;
-
-	if (old_sx == sx && old_sy == sy)
-		return;
-
-	values[0] = sx;
-	values[1] = sy;
-	mask = XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y;
-
-	xcb_configure_window(wm->conn, window->frame_id, mask, values);
-	xcb_flush(wm->conn);
-
-	old_sx = sx;
-	old_sy = sy;
+		xcb_configure_window(wm->conn, window->frame_id, mask, values);
+		xcb_flush(wm->conn);
+	}
 }
 
 #define ICCCM_WITHDRAWN_STATE	0