wlserver: start all Xwayland processes in parallel

The next commit will need to inspect wlserver.wlr.xwayland_servers
to figure out which wl_output global to expose.
This commit is contained in:
Simon Ser 2022-09-01 16:21:08 +02:00 committed by Joshie
parent ec1ce12f13
commit 697818a228

View file

@ -794,16 +794,18 @@ bool wlserver_init( void ) {
for (int i = 0; i < g_nXWaylandCount; i++) for (int i = 0; i < g_nXWaylandCount; i++)
{ {
auto server = std::make_unique<gamescope_xwayland_server_t>(wlserver.display); auto server = std::make_unique<gamescope_xwayland_server_t>(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); wl_display_flush_clients(wlserver.display);
if (wl_event_loop_dispatch(wlserver.event_loop, -1) < 0) { if (wl_event_loop_dispatch(wlserver.event_loop, -1) < 0) {
wl_log.errorf("wl_event_loop_dispatch failed\n"); wl_log.errorf("wl_event_loop_dispatch failed\n");
return false; return false;
} }
} }
wlserver.wlr.xwayland_servers.emplace_back(std::move(server));
} }
return true; return true;