Gijs Vermeulen : amstream: Increase parent IAMMediaStream refcount in IAudioMediaStream::CreateSample().
Module: wine Branch: master Commit: 08c076f542b7397aa78939b922ca348dd6a66588 URL: https://source.winehq.org/git/wine.git/?a=commit;h=08c076f542b7397aa78939b92... Author: Gijs Vermeulen <gijsvrm(a)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(a)gmail.com> Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)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);
participants (1)
-
Alexandre Julliard