[PATCH 2/5] amstream: Check for an existing stream in IAMMultiMediaStream::AddMediaStream().
Zebediah Figura
z.figura12 at gmail.com
Tue Mar 3 17:19:13 CST 2020
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
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 6497dde91c..ef6c477843 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -651,7 +651,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);
@@ -701,7 +701,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);
--
2.25.1
More information about the wine-devel
mailing list