diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c index b803ba1ba..fdc377809 100644 --- a/hw/xwayland/xwayland.c +++ b/hw/xwayland/xwayland.c @@ -462,14 +462,13 @@ static const struct wl_registry_listener registry_listener = { }; static void -socket_handler(int fd, int ready, void *data) +xwl_read_events (struct xwl_screen *xwl_screen) { - struct xwl_screen *xwl_screen = data; int ret; ret = wl_display_read_events(xwl_screen->display); if (ret == -1) - FatalError("failed to dispatch Wayland events: %s\n", strerror(errno)); + FatalError("failed to read Wayland events: %s\n", strerror(errno)); xwl_screen->prepare_read = 0; @@ -479,18 +478,10 @@ socket_handler(int fd, int ready, void *data) } static void -wakeup_handler(void *data, int err, void *pRead) +xwl_dispatch_events (struct xwl_screen *xwl_screen) { -} - -static void -block_handler(void *data, OSTimePtr pTimeout, void *pRead) -{ - struct xwl_screen *xwl_screen = data; int ret; - xwl_screen_post_damage(xwl_screen); - while (xwl_screen->prepare_read == 0 && wl_display_prepare_read(xwl_screen->display) == -1) { ret = wl_display_dispatch_pending(xwl_screen->display); @@ -506,6 +497,28 @@ block_handler(void *data, OSTimePtr pTimeout, void *pRead) FatalError("failed to write to XWayland fd: %s\n", strerror(errno)); } +static void +socket_handler(int fd, int ready, void *data) +{ + struct xwl_screen *xwl_screen = data; + + xwl_read_events (xwl_screen); +} + +static void +wakeup_handler(void *data, int err, void *pRead) +{ +} + +static void +block_handler(void *data, OSTimePtr pTimeout, void *pRead) +{ + struct xwl_screen *xwl_screen = data; + + xwl_screen_post_damage(xwl_screen); + xwl_dispatch_events (xwl_screen); +} + static CARD32 add_client_fd(OsTimerPtr timer, CARD32 time, void *arg) {