Backends: DX10, DX11, DX12: fixed a crash rendering multi-viewports if a ClearRenderTargetView() or CreateSwapChain() call failed. (#9546)
Likely to be incomplete for DX12.
This commit is contained in:
parent
d7950e2c42
commit
545d1a884a
@ -768,10 +768,12 @@ static void ImGui_ImplDX10_SetWindowSize(ImGuiViewport* viewport, ImVec2 size)
|
||||
}
|
||||
}
|
||||
|
||||
static void ImGui_ImplDX10_RenderViewport(ImGuiViewport* viewport, void*)
|
||||
static void ImGui_ImplDX10_RenderWindow(ImGuiViewport* viewport, void*)
|
||||
{
|
||||
ImGui_ImplDX10_Data* bd = ImGui_ImplDX10_GetBackendData();
|
||||
ImGui_ImplDX10_ViewportData* vd = (ImGui_ImplDX10_ViewportData*)viewport->RendererUserData;
|
||||
if (vd->RTView == nullptr) // Swap chain creation or resize failed (e.g. device removed)
|
||||
return;
|
||||
ImVec4 clear_color = ImVec4(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
bd->pd3dDevice->OMSetRenderTargets(1, &vd->RTView, nullptr);
|
||||
if (!(viewport->Flags & ImGuiViewportFlags_NoRendererClear))
|
||||
@ -792,7 +794,7 @@ void ImGui_ImplDX10_InitMultiViewportSupport()
|
||||
platform_io.Renderer_CreateWindow = ImGui_ImplDX10_CreateWindow;
|
||||
platform_io.Renderer_DestroyWindow = ImGui_ImplDX10_DestroyWindow;
|
||||
platform_io.Renderer_SetWindowSize = ImGui_ImplDX10_SetWindowSize;
|
||||
platform_io.Renderer_RenderWindow = ImGui_ImplDX10_RenderViewport;
|
||||
platform_io.Renderer_RenderWindow = ImGui_ImplDX10_RenderWindow;
|
||||
platform_io.Renderer_SwapBuffers = ImGui_ImplDX10_SwapBuffers;
|
||||
}
|
||||
|
||||
|
||||
@ -802,6 +802,8 @@ static void ImGui_ImplDX11_RenderWindow(ImGuiViewport* viewport, void*)
|
||||
{
|
||||
ImGui_ImplDX11_Data* bd = ImGui_ImplDX11_GetBackendData();
|
||||
ImGui_ImplDX11_ViewportData* vd = (ImGui_ImplDX11_ViewportData*)viewport->RendererUserData;
|
||||
if (vd->RTView == nullptr) // Swap chain creation or resize failed (e.g. device removed)
|
||||
return;
|
||||
ImVec4 clear_color = ImVec4(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
bd->pd3dDeviceContext->OMSetRenderTargets(1, &vd->RTView, nullptr);
|
||||
if (!(viewport->Flags & ImGuiViewportFlags_NoRendererClear))
|
||||
|
||||
@ -1256,6 +1256,8 @@ static void ImGui_ImplDX12_RenderWindow(ImGuiViewport* viewport, void*)
|
||||
{
|
||||
ImGui_ImplDX12_Data* bd = ImGui_ImplDX12_GetBackendData();
|
||||
ImGui_ImplDX12_ViewportData* vd = (ImGui_ImplDX12_ViewportData*)viewport->RendererUserData;
|
||||
if (vd->SwapChain == nullptr)
|
||||
return;
|
||||
|
||||
ImGui_ImplDX12_FrameContext* frame_context = ImGui_WaitForNextFrameContext(vd);
|
||||
UINT back_buffer_idx = vd->SwapChain->GetCurrentBackBufferIndex();
|
||||
|
||||
@ -114,6 +114,8 @@ Other Changes:
|
||||
Docking+Viewports Branch:
|
||||
|
||||
- Backends:
|
||||
- DX10, DX11, DX12: fixed crash when CreateSwapChain() or CreateRenderTargetView()
|
||||
calls are failing. (#9546)
|
||||
- GLFW: fixed applying mouse cursor shapes to secondary viewports, broken in 1.92.6
|
||||
when introducing a cache. (#9545) [@JamesWrigley]
|
||||
- Metal: fixed resizing windows losing framebuffer scale. (#6828, #8856) [@laikoken]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user