Module: wine Branch: master Commit: 1b3121c2ed0d02c4f516c760a3e701321a2f8f4e URL: https://source.winehq.org/git/wine.git/?a=commit;h=1b3121c2ed0d02c4f516c760a...
Author: Gijs Vermeulen gijsvrm@gmail.com Date: Wed Jul 29 14:44:00 2020 +0200
amstream: Increase IAudioData refcount in IAudioMediaStream::CreateSample().
Signed-off-by: Gijs Vermeulen gijsvrm@gmail.com Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/amstream/audiostream.c | 2 ++ dlls/amstream/tests/amstream.c | 2 ++ 2 files changed, 4 insertions(+)
diff --git a/dlls/amstream/audiostream.c b/dlls/amstream/audiostream.c index e888caaa98..85613f4f0e 100644 --- a/dlls/amstream/audiostream.c +++ b/dlls/amstream/audiostream.c @@ -202,6 +202,7 @@ static ULONG WINAPI IAudioStreamSampleImpl_Release(IAudioStreamSample *iface) if (!ref) { IAMMediaStream_Release(&This->parent->IAMMediaStream_iface); + IAudioData_Release(This->audio_data); CloseHandle(This->update_event); HeapFree(GetProcessHeap(), 0, This); } @@ -378,6 +379,7 @@ static HRESULT audiostreamsample_create(struct audio_stream *parent, IAudioData object->parent = parent; IAMMediaStream_AddRef(&parent->IAMMediaStream_iface); object->audio_data = audio_data; + IAudioData_AddRef(audio_data); object->update_event = CreateEventW(NULL, FALSE, FALSE, NULL);
*audio_stream_sample = &object->IAudioStreamSample_iface; diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c index e9e9a6d825..6631fd312a 100644 --- a/dlls/amstream/tests/amstream.c +++ b/dlls/amstream/tests/amstream.c @@ -1507,9 +1507,11 @@ static void test_media_streams(void) ok(hr == E_POINTER, "IAudioMediaStream_CreateSample returned: %x\n", hr);
EXPECT_REF(audio_stream, 3); + EXPECT_REF(audio_data, 1); 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); + EXPECT_REF(audio_data, 2);
hr = IAudioMediaStream_GetMultiMediaStream(audio_media_stream, NULL); ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);