fix: reuse wgpu compositor across windows

This commit is contained in:
Ilia Malanin 2026-06-09 13:56:32 +02:00 committed by Ashley Wulber
parent dcf4cf0194
commit f725961c87

View file

@ -864,6 +864,7 @@ async fn run_instance<P>(
platform_specific_handler.send_wayland(
platform_specific::Action::TrackWindow(window.clone(), id),
);
if compositor.is_none() {
match create_compositor::<P>(
window.clone(),
CreateCompositor {
@ -888,6 +889,7 @@ async fn run_instance<P>(
continue;
}
}
}
let window_theme = window
.theme()
@ -1014,6 +1016,7 @@ async fn run_instance<P>(
&mut is_window_opening,
&mut system_theme,
&mut platform_specific_handler,
is_daemon,
);
if exited {
runtime.track(None.into_iter());
@ -1171,6 +1174,7 @@ async fn run_instance<P>(
&mut is_window_opening,
&mut system_theme,
&mut platform_specific_handler,
is_daemon,
);
}
@ -1369,6 +1373,7 @@ async fn run_instance<P>(
&mut is_window_opening,
&mut system_theme,
&mut platform_specific_handler,
is_daemon,
);
} else {
window.state.update(&program, window.raw.as_ref(), &event);
@ -1562,6 +1567,7 @@ async fn run_instance<P>(
&mut is_window_opening,
&mut system_theme,
&mut platform_specific_handler,
is_daemon,
);
if exited {
runtime.track(None.into_iter());
@ -2106,6 +2112,7 @@ fn run_action<'a, P, C>(
is_window_opening: &mut bool,
system_theme: &mut theme::Mode,
platform_specific: &mut crate::platform_specific::PlatformSpecific,
is_daemon: bool,
) -> bool
where
P: Program,
@ -2190,7 +2197,7 @@ where
));
}
if window_manager.is_empty() {
if window_manager.is_empty() && !is_daemon {
*compositor = None;
}
}