diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index d9548a8746c6aedf887027eb4ad97f590c5e2342..9121ef66665359716aa4d5b2fddedc4f683138cf 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -1132,6 +1132,10 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
 
     AddCallback(&PropertyStateCallback, xwl_property_callback, pScreen);
 
+    wl_display_roundtrip(xwl_screen->display);
+    while (xwl_screen->expecting_event)
+        wl_display_roundtrip(xwl_screen->display);
+
     return ret;
 }