Nikolay Sivov : mfmediaengine: Keep device manager reference.

Alexandre Julliard julliard at winehq.org
Mon May 17 15:45:30 CDT 2021


Module: wine
Branch: master
Commit: b20c478bfd1322cf658105ce5695f5447288799f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b20c478bfd1322cf658105ce5695f5447288799f

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon May 17 12:26:49 2021 +0300

mfmediaengine: Keep device manager reference.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfmediaengine/main.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index 0678768cf08..489cb2cdc6a 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -93,6 +93,8 @@ struct media_engine
     LONG refcount;
     IMFMediaEngineNotify *callback;
     IMFAttributes *attributes;
+    IMFDXGIDeviceManager *device_manager;
+    HANDLE device_handle;
     enum media_engine_mode mode;
     unsigned int flags;
     double playback_rate;
@@ -974,6 +976,11 @@ static void free_media_engine(struct media_engine *engine)
         IMFAttributes_Release(engine->attributes);
     if (engine->resolver)
         IMFSourceResolver_Release(engine->resolver);
+    if (engine->device_manager)
+    {
+        IMFDXGIDeviceManager_CloseDeviceHandle(engine->device_manager, engine->device_handle);
+        IMFDXGIDeviceManager_Release(engine->device_manager);
+    }
     SysFreeString(engine->current_source);
     DeleteCriticalSection(&engine->cs);
     free(engine->video_frame.buffer);
@@ -1878,6 +1885,9 @@ static HRESULT init_media_engine(DWORD flags, IMFAttributes *attributes, struct
     if (FAILED(hr))
         return hr;
 
+    IMFAttributes_GetUnknown(attributes, &MF_MEDIA_ENGINE_DXGI_MANAGER, &IID_IMFDXGIDeviceManager,
+            (void **)&engine->device_manager);
+
     if (FAILED(hr = MFCreateMediaSession(NULL, &engine->session)))
         return hr;
 




More information about the wine-cvs mailing list