Gijs Vermeulen : amstream: Increase parent IAMMediaStream refcount in IAudioMediaStream::CreateSample().

Alexandre Julliard julliard at winehq.org
Wed Jul 29 15:47:01 CDT 2020


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

Author: Gijs Vermeulen <gijsvrm at gmail.com>
Date:   Wed Jul 29 14:43:59 2020 +0200

amstream: Increase parent IAMMediaStream refcount in IAudioMediaStream::CreateSample().

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

---

 dlls/amstream/audiostream.c    | 2 ++
 dlls/amstream/tests/amstream.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/dlls/amstream/audiostream.c b/dlls/amstream/audiostream.c
index 112891eeb7..e888caaa98 100644
--- a/dlls/amstream/audiostream.c
+++ b/dlls/amstream/audiostream.c
@@ -201,6 +201,7 @@ static ULONG WINAPI IAudioStreamSampleImpl_Release(IAudioStreamSample *iface)
 
     if (!ref)
     {
+        IAMMediaStream_Release(&This->parent->IAMMediaStream_iface);
         CloseHandle(This->update_event);
         HeapFree(GetProcessHeap(), 0, This);
     }
@@ -375,6 +376,7 @@ static HRESULT audiostreamsample_create(struct audio_stream *parent, IAudioData
     object->IAudioStreamSample_iface.lpVtbl = &AudioStreamSample_Vtbl;
     object->ref = 1;
     object->parent = parent;
+    IAMMediaStream_AddRef(&parent->IAMMediaStream_iface);
     object->audio_data = audio_data;
     object->update_event = CreateEventW(NULL, FALSE, FALSE, NULL);
 
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
index c5cdd7aaee..e9e9a6d825 100644
--- a/dlls/amstream/tests/amstream.c
+++ b/dlls/amstream/tests/amstream.c
@@ -1505,8 +1505,11 @@ static void test_media_streams(void)
 
             hr = IAudioMediaStream_CreateSample(audio_media_stream, NULL, 0, &audio_sample);
             ok(hr == E_POINTER, "IAudioMediaStream_CreateSample returned: %x\n", hr);
+
+            EXPECT_REF(audio_stream, 3);
             hr = IAudioMediaStream_CreateSample(audio_media_stream, audio_data, 0, &audio_sample);
             ok(hr == S_OK, "IAudioMediaStream_CreateSample returned: %x\n", hr);
+            EXPECT_REF(audio_stream, 4);
 
             hr = IAudioMediaStream_GetMultiMediaStream(audio_media_stream, NULL);
             ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);




More information about the wine-cvs mailing list