diff --git a/gfx/common/d3d_common.cpp b/gfx/common/d3d_common.cpp index 63c5b148db..8e71debb4c 100644 --- a/gfx/common/d3d_common.cpp +++ b/gfx/common/d3d_common.cpp @@ -502,3 +502,16 @@ bool d3d_reset(LPDIRECT3DDEVICE dev, D3DPRESENT_PARAMETERS *d3dpp) return false; } + +void d3d_device_free(LPDIRECT3DDEVICE dev, LPDIRECT3D pd3d) +{ + if (!dev) + return; + + dev->Release(); + + if (!pd3d) + return; + + pd3d->Release(); +} diff --git a/gfx/common/d3d_common.h b/gfx/common/d3d_common.h index 82c63a451f..c4fef15ea3 100644 --- a/gfx/common/d3d_common.h +++ b/gfx/common/d3d_common.h @@ -111,6 +111,8 @@ void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value); bool d3d_reset(LPDIRECT3DDEVICE dev, D3DPRESENT_PARAMETERS *d3dpp); +void d3d_device_free(LPDIRECT3DDEVICE dev, LPDIRECT3D pd3d); + #ifdef __cplusplus } #endif diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index cc300db18e..9c4092a7b8 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -834,10 +834,7 @@ static void d3d_free(void *data) #endif #endif - if (d3d->dev) - d3d->dev->Release(); - if (d3d->g_pD3D) - d3d->g_pD3D->Release(); + d3d_device_free(d3d->dev); win32_monitor_from_window(window, true);