From d88121ff5b90013647d1b27ee7d5012f1d85a452 Mon Sep 17 00:00:00 2001 From: omar Date: Mon, 6 May 2019 10:11:02 +0200 Subject: [PATCH] Examples: DirectX9/10/11: Taking reference to device + subsequent merge of this in docking will fix DX9 issue #2524 --- examples/imgui_impl_dx10.cpp | 3 ++- examples/imgui_impl_dx11.cpp | 6 ++++-- examples/imgui_impl_dx9.cpp | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/imgui_impl_dx10.cpp b/examples/imgui_impl_dx10.cpp index 8d2c647dd..235428fc0 100644 --- a/examples/imgui_impl_dx10.cpp +++ b/examples/imgui_impl_dx10.cpp @@ -500,6 +500,7 @@ bool ImGui_ImplDX10_Init(ID3D10Device* device) } if (pDXGIDevice) pDXGIDevice->Release(); if (pDXGIAdapter) pDXGIAdapter->Release(); + g_pd3dDevice->AddRef(); return true; } @@ -508,7 +509,7 @@ void ImGui_ImplDX10_Shutdown() { ImGui_ImplDX10_InvalidateDeviceObjects(); if (g_pFactory) { g_pFactory->Release(); g_pFactory = NULL; } - g_pd3dDevice = NULL; + if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } } void ImGui_ImplDX10_NewFrame() diff --git a/examples/imgui_impl_dx11.cpp b/examples/imgui_impl_dx11.cpp index 9a44d6ae7..18c32e6cb 100644 --- a/examples/imgui_impl_dx11.cpp +++ b/examples/imgui_impl_dx11.cpp @@ -508,6 +508,8 @@ bool ImGui_ImplDX11_Init(ID3D11Device* device, ID3D11DeviceContext* device_co } if (pDXGIDevice) pDXGIDevice->Release(); if (pDXGIAdapter) pDXGIAdapter->Release(); + g_pd3dDevice->AddRef(); + g_pd3dDeviceContext->AddRef(); return true; } @@ -516,8 +518,8 @@ void ImGui_ImplDX11_Shutdown() { ImGui_ImplDX11_InvalidateDeviceObjects(); if (g_pFactory) { g_pFactory->Release(); g_pFactory = NULL; } - g_pd3dDevice = NULL; - g_pd3dDeviceContext = NULL; + if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } + if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; } } void ImGui_ImplDX11_NewFrame() diff --git a/examples/imgui_impl_dx9.cpp b/examples/imgui_impl_dx9.cpp index f375c3905..fd4522cd1 100644 --- a/examples/imgui_impl_dx9.cpp +++ b/examples/imgui_impl_dx9.cpp @@ -219,13 +219,14 @@ bool ImGui_ImplDX9_Init(IDirect3DDevice9* device) io.BackendRendererName = "imgui_impl_dx9"; g_pd3dDevice = device; + g_pd3dDevice->AddRef(); return true; } void ImGui_ImplDX9_Shutdown() { ImGui_ImplDX9_InvalidateDeviceObjects(); - g_pd3dDevice = NULL; + if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } } static bool ImGui_ImplDX9_CreateFontsTexture()