# Objective Fix a crash when minimizing a window. (#16704) It happens when the window contains Camera with a custom Viewport. ## Solution Remove ExtractedCamera when the corresponding camera in main world has zero target size. It indicates that the window is minimized. ## Testing Tested in Windows 11. Previously the split_screen example crashes when the window is minimized; and with this change, it would not crash. Other behaviors remain unchanged.
This commit is contained in:
parent
8777dd4144
commit
9751db4d6c
@ -433,6 +433,17 @@ pub fn extract_cameras(
|
|||||||
mapper: Extract<Query<&RenderEntity>>,
|
mapper: Extract<Query<&RenderEntity>>,
|
||||||
) {
|
) {
|
||||||
let primary_window = primary_window.iter().next();
|
let primary_window = primary_window.iter().next();
|
||||||
|
type ExtractedCameraComponents = (
|
||||||
|
ExtractedCamera,
|
||||||
|
ExtractedView,
|
||||||
|
RenderVisibleEntities,
|
||||||
|
TemporalJitter,
|
||||||
|
MipBias,
|
||||||
|
RenderLayers,
|
||||||
|
Projection,
|
||||||
|
NoIndirectDrawing,
|
||||||
|
ViewUniformOffset,
|
||||||
|
);
|
||||||
for (
|
for (
|
||||||
main_entity,
|
main_entity,
|
||||||
render_entity,
|
render_entity,
|
||||||
@ -452,17 +463,9 @@ pub fn extract_cameras(
|
|||||||
) in query.iter()
|
) in query.iter()
|
||||||
{
|
{
|
||||||
if !camera.is_active {
|
if !camera.is_active {
|
||||||
commands.entity(render_entity).remove::<(
|
commands
|
||||||
ExtractedCamera,
|
.entity(render_entity)
|
||||||
ExtractedView,
|
.remove::<ExtractedCameraComponents>();
|
||||||
RenderVisibleEntities,
|
|
||||||
TemporalJitter,
|
|
||||||
MipBias,
|
|
||||||
RenderLayers,
|
|
||||||
Projection,
|
|
||||||
NoIndirectDrawing,
|
|
||||||
ViewUniformOffset,
|
|
||||||
)>();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,6 +484,9 @@ pub fn extract_cameras(
|
|||||||
camera.physical_target_size(),
|
camera.physical_target_size(),
|
||||||
) {
|
) {
|
||||||
if target_size.x == 0 || target_size.y == 0 {
|
if target_size.x == 0 || target_size.y == 0 {
|
||||||
|
commands
|
||||||
|
.entity(render_entity)
|
||||||
|
.remove::<ExtractedCameraComponents>();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user