[vlc-devel] [PATCH 04/14] d3d9_fmt: add D3D9_ReleaseDevice() to match D3D9_CreateDevice()
Steve Lhomme
robux4 at videolabs.io
Sat Nov 18 14:26:37 CET 2017
---
modules/video_chroma/d3d9_fmt.c | 9 +++++++++
modules/video_chroma/d3d9_fmt.h | 2 ++
modules/video_output/win32/direct3d9.c | 15 +++------------
3 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/modules/video_chroma/d3d9_fmt.c b/modules/video_chroma/d3d9_fmt.c
index 01951535a1..833ba6e6cf 100644
--- a/modules/video_chroma/d3d9_fmt.c
+++ b/modules/video_chroma/d3d9_fmt.c
@@ -125,6 +125,15 @@ HRESULT D3D9_CreateDevice(vlc_object_t *o, d3d9_handle_t *hd3d, HWND hwnd,
return hr;
}
+void D3D9_ReleaseDevice(d3d9_device_t *d3d_dev)
+{
+ if (d3d_dev->dev)
+ {
+ IDirect3DDevice9_Release(d3d_dev->dev);
+ d3d_dev->dev = NULL;
+ }
+}
+
/**
* It setup vout_display_sys_t::d3dpp and vout_display_sys_t::rect_display
* from the default adapter.
diff --git a/modules/video_chroma/d3d9_fmt.h b/modules/video_chroma/d3d9_fmt.h
index 7785ef9a4d..843553b38a 100644
--- a/modules/video_chroma/d3d9_fmt.h
+++ b/modules/video_chroma/d3d9_fmt.h
@@ -76,6 +76,8 @@ HRESULT D3D9_CreateDevice(vlc_object_t *, d3d9_handle_t *, HWND,
const video_format_t *, d3d9_device_t *out);
#define D3D9_CreateDevice(a,b,c,d,e) D3D9_CreateDevice( VLC_OBJECT(a), b, c, d, e )
+void D3D9_ReleaseDevice(d3d9_device_t *);
+
int D3D9_FillPresentationParameters(vlc_object_t *, d3d9_handle_t *, UINT AdapterToUse, HWND,
const video_format_t *, d3d9_device_t *out);
diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c
index 55f3de7508..04d1ca0657 100644
--- a/modules/video_output/win32/direct3d9.c
+++ b/modules/video_output/win32/direct3d9.c
@@ -805,15 +805,6 @@ static void Direct3D9Destroy(vlc_object_t *o, struct d3dctx *d3dctx)
static int Direct3D9CreateResources (vout_display_t *, video_format_t *);
static void Direct3D9DestroyResources(vout_display_t *);
-static void Direct3D9DestroyDevice(vlc_object_t *o, struct d3dctx *d3dctx)
-{
- VLC_UNUSED(o);
-
- if (d3dctx->d3d_dev.dev)
- IDirect3DDevice9_Release(d3dctx->d3d_dev.dev);
- d3dctx->d3d_dev.dev = NULL;
-}
-
/**
* It creates a Direct3D9 device and the associated resources.
*/
@@ -865,7 +856,7 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt)
return VLC_SUCCESS;
error:
- Direct3D9DestroyDevice(VLC_OBJECT(vd), &sys->d3dctx);
+ D3D9_ReleaseDevice(&sys->d3dctx.d3d_dev);
return VLC_EGENERIC;
}
@@ -877,7 +868,7 @@ static void Direct3D9Close(vout_display_t *vd)
vout_display_sys_t *sys = vd->sys;
Direct3D9DestroyResources(vd);
- Direct3D9DestroyDevice(VLC_OBJECT(vd), &sys->d3dctx);
+ D3D9_ReleaseDevice(&sys->d3dctx.d3d_dev);
}
/**
@@ -1976,7 +1967,7 @@ GLConvClose(vlc_object_t *obj)
if (priv->dx_render)
IDirect3DSurface9_Release(priv->dx_render);
- Direct3D9DestroyDevice(obj, &priv->d3dctx);
+ D3D9_ReleaseDevice(&priv->d3dctx.d3d_dev);
Direct3D9Destroy(obj, &priv->d3dctx);
free(tc->priv);
}
--
2.14.2
More information about the vlc-devel
mailing list