wlserver: wait for Xwayland to be ready in wlserver_init

We''l be able to move some init bits out of wlserver with this.
This commit is contained in:
Simon Ser 2021-07-27 10:25:56 +02:00
parent 25b036a2d6
commit 0f0489b455

View file

@ -63,6 +63,8 @@ enum wlserver_touch_click_mode g_nTouchClickMode = WLSERVER_TOUCH_CLICK_LEFT;
static struct wl_list pending_surfaces = {0};
static bool bXwaylandReady = false;
static void wlserver_surface_set_wlr( struct wlserver_surface *surf, struct wlr_surface *wlr_surf );
void sig_handler(int signal)
@ -110,6 +112,8 @@ const struct wlr_surface_role xwayland_surface_role = {
static void xwayland_ready(struct wl_listener *listener, void *data)
{
bXwaylandReady = true;
setenv("DISPLAY", wlserver.wlr.xwayland_server->display_name, true);
g_XWLDpy = XOpenDisplay( wlserver.wlr.xwayland_server->display_name );
@ -589,6 +593,14 @@ int wlserver_init(int argc, char **argv, bool bIsNested) {
return 1;
}
while (!bXwaylandReady) {
wl_display_flush_clients(wlserver.wl_display);
if (wl_event_loop_dispatch(wlserver.wl_event_loop, -1) < 0) {
fprintf(stderr, "wlserver: wl_event_loop_dispatch failed");
return 1;
}
}
wlr_output_enable( wlserver.wlr.output, true );
wlr_output_set_custom_mode( wlserver.wlr.output, g_nNestedWidth, g_nNestedHeight, g_nOutputRefresh * 1000 );
wlr_output_commit( wlserver.wlr.output );