Zebediah Figura : amstream: Check for an existing stream in IAMMultiMediaStream::AddMediaStream().

Alexandre Julliard julliard at winehq.org
Wed Mar 4 16:50:06 CST 2020


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Tue Mar  3 17:19:13 2020 -0600

amstream: Check for an existing stream in IAMMultiMediaStream::AddMediaStream().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/amstream/multimedia.c     | 7 +++++++
 dlls/amstream/tests/amstream.c | 4 ++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/dlls/amstream/multimedia.c b/dlls/amstream/multimedia.c
index c3c806b36f..6643d5d141 100644
--- a/dlls/amstream/multimedia.c
+++ b/dlls/amstream/multimedia.c
@@ -289,6 +289,7 @@ static HRESULT WINAPI multimedia_stream_AddMediaStream(IAMMultiMediaStream *ifac
     struct multimedia_stream *This = impl_from_IAMMultiMediaStream(iface);
     HRESULT hr;
     IAMMediaStream* pStream;
+    IMediaStream *stream;
 
     TRACE("mmstream %p, stream_object %p, id %s, flags %#x, ret_stream %p.\n",
             This, stream_object, debugstr_guid(PurposeId), dwFlags, ret_stream);
@@ -296,6 +297,12 @@ static HRESULT WINAPI multimedia_stream_AddMediaStream(IAMMultiMediaStream *ifac
     if (!IsEqualGUID(PurposeId, &MSPID_PrimaryVideo) && !IsEqualGUID(PurposeId, &MSPID_PrimaryAudio))
         return MS_E_PURPOSEID;
 
+    if (IMediaStreamFilter_GetMediaStream(This->filter, PurposeId, &stream) == S_OK)
+    {
+        IMediaStream_Release(stream);
+        return MS_E_PURPOSEID;
+    }
+
     if (dwFlags & AMMSF_ADDDEFAULTRENDERER)
     {
         if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo))
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index 80fb138a90..0a344f412e 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -652,7 +652,7 @@ static void test_add_stream(void)
     ok(hr == S_OK, "Got hr %#x.\n", hr);
 
     hr = IAMMultiMediaStream_AddMediaStream(mmstream, NULL, &MSPID_PrimaryVideo, 0, &stream);
-    todo_wine ok(hr == MS_E_PURPOSEID, "Got hr %#x.\n", hr);
+    ok(hr == MS_E_PURPOSEID, "Got hr %#x.\n", hr);
 
     hr = IAMMultiMediaStream_EnumMediaStreams(mmstream, 0, NULL);
     todo_wine ok(hr == E_POINTER, "Got hr %#x.\n", hr);
@@ -702,7 +702,7 @@ static void test_add_stream(void)
     todo_wine check_get_stream(mmstream, stream_filter, &test_mspid, (IMediaStream *)&teststream);
 
     hr = IAMMultiMediaStream_AddMediaStream(mmstream, NULL, &MSPID_PrimaryVideo, 0, &stream);
-    todo_wine ok(hr == MS_E_PURPOSEID, "Got hr %#x.\n", hr);
+    ok(hr == MS_E_PURPOSEID, "Got hr %#x.\n", hr);
 
     hr = IAMMultiMediaStream_GetFilterGraph(mmstream, &graph);
     ok(hr == S_OK, "Got hr %#x.\n", hr);




More information about the wine-cvs mailing list