don't run create_surfaces
system if not needed (#11720)
# Objective - Change set of systems as I made a mistake in #11672 - Don't block main when not needed - Fixes #11235 ## Solution - add a run condition so that the system won't run and block main if not needed
This commit is contained in:
parent
312df3cec7
commit
e927756d72
@ -43,8 +43,13 @@ impl Plugin for WindowRenderPlugin {
|
|||||||
.init_resource::<ExtractedWindows>()
|
.init_resource::<ExtractedWindows>()
|
||||||
.init_resource::<WindowSurfaces>()
|
.init_resource::<WindowSurfaces>()
|
||||||
.add_systems(ExtractSchedule, extract_windows)
|
.add_systems(ExtractSchedule, extract_windows)
|
||||||
.add_systems(Render, prepare_windows.in_set(RenderSet::PrepareAssets))
|
.add_systems(
|
||||||
.add_systems(Render, create_surfaces.in_set(RenderSet::ManageViews));
|
Render,
|
||||||
|
create_surfaces
|
||||||
|
.run_if(need_new_surfaces)
|
||||||
|
.in_set(RenderSet::PrepareAssets),
|
||||||
|
)
|
||||||
|
.add_systems(Render, prepare_windows.in_set(RenderSet::ManageViews));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,6 +424,18 @@ pub fn prepare_windows(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn need_new_surfaces(
|
||||||
|
windows: Res<ExtractedWindows>,
|
||||||
|
window_surfaces: Res<WindowSurfaces>,
|
||||||
|
) -> bool {
|
||||||
|
for window in windows.windows.values() {
|
||||||
|
if !window_surfaces.configured_windows.contains(&window.entity) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
/// Creates window surfaces.
|
/// Creates window surfaces.
|
||||||
pub fn create_surfaces(
|
pub fn create_surfaces(
|
||||||
// By accessing a NonSend resource, we tell the scheduler to put this system on the main thread,
|
// By accessing a NonSend resource, we tell the scheduler to put this system on the main thread,
|
||||||
|
Loading…
Reference in New Issue
Block a user