[vlc-devel] [PATCH 06/23] directx_va: release the d3ddev in pf_destroy_device()

Steve Lhomme robux4 at videolabs.io
Wed Jun 21 14:14:51 CEST 2017


And make the release strongly typed
---
 modules/codec/avcodec/d3d11va.c    | 3 +++
 modules/codec/avcodec/directx_va.c | 2 --
 modules/codec/avcodec/dxva2.c      | 3 +++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index b3efb174fa..e049773bc9 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -530,10 +530,13 @@ static int D3dCreateDevice(vlc_va_t *va)
  */
 static void D3dDestroyDevice(vlc_va_t *va)
 {
+    directx_sys_t *dx_sys = &va->sys->dx_sys;
     if (va->sys->d3dvidctx)
         ID3D11VideoContext_Release(va->sys->d3dvidctx);
     if (va->sys->d3dctx)
         ID3D11DeviceContext_Release(va->sys->d3dctx);
+    if (dx_sys->d3ddev)
+        ID3D11Device_Release(dx_sys->d3ddev);
 }
 /**
  * It describes our Direct3D object
diff --git a/modules/codec/avcodec/directx_va.c b/modules/codec/avcodec/directx_va.c
index e7ca04cfc8..90c85d8499 100644
--- a/modules/codec/avcodec/directx_va.c
+++ b/modules/codec/avcodec/directx_va.c
@@ -438,8 +438,6 @@ void directx_va_Close(vlc_va_t *va, directx_sys_t *dx_sys)
     if (dx_sys->pf_destroy_device_manager)
         dx_sys->pf_destroy_device_manager(va);
     dx_sys->pf_destroy_device(va);
-    if (dx_sys->d3ddev)
-        IUnknown_Release( dx_sys->d3ddev );
 
     if (dx_sys->hdecoder_dll)
         FreeLibrary(dx_sys->hdecoder_dll);
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
index 0ebe2df0b9..10a8608b45 100644
--- a/modules/codec/avcodec/dxva2.c
+++ b/modules/codec/avcodec/dxva2.c
@@ -430,8 +430,11 @@ static int D3dCreateDevice(vlc_va_t *va)
  */
 static void D3dDestroyDevice(vlc_va_t *va)
 {
+    directx_sys_t *dx_sys = &va->sys->dx_sys;
     if (va->sys->d3dobj)
         IDirect3D9_Release(va->sys->d3dobj);
+    if (dx_sys->d3ddev)
+        IDirect3DDevice9_Release(dx_sys->d3ddev);
 }
 /**
  * It describes our Direct3D object
-- 
2.12.1



More information about the vlc-devel mailing list