diff --git a/src/wlserver.cpp b/src/wlserver.cpp index 99ba75f..babef80 100644 --- a/src/wlserver.cpp +++ b/src/wlserver.cpp @@ -794,16 +794,18 @@ bool wlserver_init( void ) { for (int i = 0; i < g_nXWaylandCount; i++) { auto server = std::make_unique(wlserver.display); + wlserver.wlr.xwayland_servers.emplace_back(std::move(server)); + } - while (!server->is_xwayland_ready()) { + for (size_t i = 0; i < wlserver.wlr.xwayland_servers.size(); i++) + { + while (!wlserver.wlr.xwayland_servers[i]->is_xwayland_ready()) { wl_display_flush_clients(wlserver.display); if (wl_event_loop_dispatch(wlserver.event_loop, -1) < 0) { wl_log.errorf("wl_event_loop_dispatch failed\n"); return false; } } - - wlserver.wlr.xwayland_servers.emplace_back(std::move(server)); } return true;