Nikolay Sivov : mfmediaengine: Implement GetCurrentSource().
Alexandre Julliard
julliard at winehq.org
Thu Jun 4 16:08:00 CDT 2020
Module: wine
Branch: master
Commit: 496a7035accadee1924f14ae609b3b8fd39c3cfd
URL: https://source.winehq.org/git/wine.git/?a=commit;h=496a7035accadee1924f14ae609b3b8fd39c3cfd
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu Jun 4 13:41:47 2020 +0300
mfmediaengine: Implement GetCurrentSource().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mfmediaengine/Makefile.in | 2 +-
dlls/mfmediaengine/main.c | 24 ++++++++++++++++++++++--
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/dlls/mfmediaengine/Makefile.in b/dlls/mfmediaengine/Makefile.in
index cb593cb7ed..b97e9eec33 100644
--- a/dlls/mfmediaengine/Makefile.in
+++ b/dlls/mfmediaengine/Makefile.in
@@ -1,6 +1,6 @@
MODULE = mfmediaengine.dll
IMPORTLIB = mfmediaengine
-IMPORTS = mfplat mf mfuuid uuid
+IMPORTS = oleaut32 mfplat mf mfuuid uuid
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index 7693205238..2f4a38936c 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -88,6 +88,7 @@ struct media_engine
HRESULT extended_code;
IMFMediaSession *session;
IMFSourceResolver *resolver;
+ BSTR current_source;
CRITICAL_SECTION cs;
};
@@ -499,6 +500,7 @@ static void free_media_engine(struct media_engine *engine)
IMFAttributes_Release(engine->attributes);
if (engine->resolver)
IMFSourceResolver_Release(engine->resolver);
+ SysFreeString(engine->current_source);
DeleteCriticalSection(&engine->cs);
heap_free(engine);
}
@@ -577,6 +579,11 @@ static HRESULT WINAPI media_engine_SetSource(IMFMediaEngine *iface, BSTR url)
EnterCriticalSection(&engine->cs);
+ SysFreeString(engine->current_source);
+ engine->current_source = NULL;
+ if (url)
+ engine->current_source = SysAllocString(url);
+
IMFMediaEngineNotify_EventNotify(engine->callback, MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS, 0, 0);
if (url)
@@ -602,9 +609,22 @@ static HRESULT WINAPI media_engine_SetSource(IMFMediaEngine *iface, BSTR url)
static HRESULT WINAPI media_engine_GetCurrentSource(IMFMediaEngine *iface, BSTR *url)
{
- FIXME("(%p, %p): stub.\n", iface, url);
+ struct media_engine *engine = impl_from_IMFMediaEngine(iface);
+ HRESULT hr = S_OK;
- return E_NOTIMPL;
+ TRACE("%p, %p.\n", iface, url);
+
+ *url = NULL;
+
+ EnterCriticalSection(&engine->cs);
+ if (engine->current_source)
+ {
+ if (!(*url = SysAllocString(engine->current_source)))
+ hr = E_OUTOFMEMORY;
+ }
+ LeaveCriticalSection(&engine->cs);
+
+ return hr;
}
static USHORT WINAPI media_engine_GetNetworkState(IMFMediaEngine *iface)
More information about the wine-cvs
mailing list