Refactor new editor host resize pipeline
This commit is contained in:
@@ -56,7 +56,10 @@ D3D12WindowRenderLoopResizeResult D3D12WindowRenderLoop::ApplyResize(UINT width,
|
||||
}
|
||||
|
||||
m_uiRenderer->Resize(width, height);
|
||||
m_uiRenderer->DetachWindowRenderer();
|
||||
const bool hadViewportSurfacePresentation = m_uiRenderer->HasAttachedWindowRenderer();
|
||||
if (hadViewportSurfacePresentation) {
|
||||
m_uiRenderer->ReleaseWindowRendererBackBufferTargets();
|
||||
}
|
||||
|
||||
const bool resizedWindowRenderer =
|
||||
m_windowRenderer->Resize(static_cast<int>(width), static_cast<int>(height));
|
||||
@@ -68,6 +71,28 @@ D3D12WindowRenderLoopResizeResult D3D12WindowRenderLoop::ApplyResize(UINT width,
|
||||
}
|
||||
|
||||
if (!resizedWindowRenderer) {
|
||||
if (hadViewportSurfacePresentation) {
|
||||
result.hasViewportSurfacePresentation =
|
||||
m_uiRenderer->RebuildWindowRendererBackBufferTargets();
|
||||
if (!result.hasViewportSurfacePresentation) {
|
||||
const D3D12WindowRenderLoopAttachResult attachResult =
|
||||
Attach(*m_uiRenderer, *m_windowRenderer);
|
||||
result.hasViewportSurfacePresentation = attachResult.hasViewportSurfacePresentation;
|
||||
result.interopWarning = attachResult.interopWarning;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
if (hadViewportSurfacePresentation) {
|
||||
result.hasViewportSurfacePresentation =
|
||||
m_uiRenderer->RebuildWindowRendererBackBufferTargets();
|
||||
if (!result.hasViewportSurfacePresentation) {
|
||||
const D3D12WindowRenderLoopAttachResult attachResult =
|
||||
Attach(*m_uiRenderer, *m_windowRenderer);
|
||||
result.hasViewportSurfacePresentation = attachResult.hasViewportSurfacePresentation;
|
||||
result.interopWarning = attachResult.interopWarning;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user