Nikolay Sivov : mfmediaengine: Keep loop flag.

Alexandre Julliard julliard at winehq.org
Thu May 28 17:11:09 CDT 2020


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu May 28 18:54:21 2020 +0300

mfmediaengine: Keep loop flag.

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

---

 dlls/mfmediaengine/main.c                | 20 +++++++++++++++++---
 dlls/mfmediaengine/tests/mfmediaengine.c |  3 ---
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c
index 7053a3afea..eef485e315 100644
--- a/dlls/mfmediaengine/main.c
+++ b/dlls/mfmediaengine/main.c
@@ -60,6 +60,7 @@ enum media_engine_flags
     /* MF_MEDIA_ENGINE_CREATEFLAGS_MASK is 0x1f. */
     FLAGS_ENGINE_SHUT_DOWN = 0x20,
     FLAGS_ENGINE_AUTO_PLAY = 0x40,
+    FLAGS_ENGINE_LOOP = 0x80,
 };
 
 struct media_engine
@@ -342,16 +343,29 @@ static HRESULT WINAPI media_engine_SetAutoPlay(IMFMediaEngine *iface, BOOL autop
 
 static BOOL WINAPI media_engine_GetLoop(IMFMediaEngine *iface)
 {
-    FIXME("(%p): stub.\n", iface);
+    struct media_engine *engine = impl_from_IMFMediaEngine(iface);
+    BOOL value;
 
-    return FALSE;
+    TRACE("%p.\n", iface);
+
+    EnterCriticalSection(&engine->cs);
+    value = !!(engine->flags & FLAGS_ENGINE_LOOP);
+    LeaveCriticalSection(&engine->cs);
+
+    return value;
 }
 
 static HRESULT WINAPI media_engine_SetLoop(IMFMediaEngine *iface, BOOL loop)
 {
+    struct media_engine *engine = impl_from_IMFMediaEngine(iface);
+
     FIXME("(%p, %d): stub.\n", iface, loop);
 
-    return E_NOTIMPL;
+    EnterCriticalSection(&engine->cs);
+    media_engine_set_flag(engine, FLAGS_ENGINE_LOOP, loop);
+    LeaveCriticalSection(&engine->cs);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI media_engine_Play(IMFMediaEngine *iface)
diff --git a/dlls/mfmediaengine/tests/mfmediaengine.c b/dlls/mfmediaengine/tests/mfmediaengine.c
index 8f6c4ca75b..504464b527 100644
--- a/dlls/mfmediaengine/tests/mfmediaengine.c
+++ b/dlls/mfmediaengine/tests/mfmediaengine.c
@@ -341,7 +341,6 @@ todo_wine
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
 
     state = IMFMediaEngine_GetAutoPlay(media_engine);
-todo_wine
     ok(!!state, "Unexpected state.\n");
 
     /* Loop mode is still accessible. */
@@ -349,11 +348,9 @@ todo_wine
     ok(!state, "Unexpected state.\n");
 
     hr = IMFMediaEngine_SetLoop(media_engine, TRUE);
-todo_wine
     ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
 
     state = IMFMediaEngine_GetLoop(media_engine);
-todo_wine
     ok(!!state, "Unexpected state.\n");
 
     hr = IMFMediaEngine_Play(media_engine);




More information about the wine-cvs mailing list