From: Gijs Vermeulen Subject: [PATCH 3/3] amstream: Add IDirectDrawMediaStream::SetDirectDraw() tests. Message-Id: <20200618230443.65444-3-gijsvrm@gmail.com> Date: Fri, 19 Jun 2020 01:04:43 +0200 In-Reply-To: <20200618230443.65444-1-gijsvrm@gmail.com> References: <20200618230443.65444-1-gijsvrm@gmail.com> Signed-off-by: Gijs Vermeulen --- dlls/amstream/tests/amstream.c | 79 ++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c index 72ef7912aa..b0d12d895f 100644 --- a/dlls/amstream/tests/amstream.c +++ b/dlls/amstream/tests/amstream.c @@ -4478,6 +4478,84 @@ static void test_mediastreamfilter_get_current_stream_time(void) ok(!ref, "Got outstanding refcount %d.\n", ref); } +static void test_ddrawstream_getsetdirectdraw(void) +{ + IDirectDrawMediaStream *ddraw_stream; + IDirectDraw *ddraw, *ddraw2, *ddraw3; + IDirectDrawStreamSample *sample; + IAMMediaStream *stream; + HRESULT hr; + + hr = DirectDrawCreate(NULL, &ddraw, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + hr = IDirectDraw_SetCooperativeLevel(ddraw, GetDesktopWindow(), DDSCL_NORMAL); + ok(hr == DD_OK, "Got hr %#x.\n", hr); + + hr = DirectDrawCreate(NULL, &ddraw2, NULL); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = CoCreateInstance(&CLSID_AMDirectDrawStream, NULL, CLSCTX_INPROC_SERVER, &IID_IAMMediaStream, (void **)&stream); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IAMMediaStream_QueryInterface(stream, &IID_IDirectDrawMediaStream, (void **)&ddraw_stream); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IAMMediaStream_Initialize(stream, (IUnknown *)ddraw2, 0, &MSPID_PrimaryAudio, STREAMTYPE_READ); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IDirectDrawMediaStream_GetDirectDraw(ddraw_stream, &ddraw3); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(ddraw3 == ddraw2, "Expected ddraw %p, got %p.\n", ddraw2, ddraw3); + IDirectDraw_Release(ddraw3); + + hr = IDirectDrawMediaStream_SetDirectDraw(ddraw_stream, NULL); + todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IDirectDrawMediaStream_GetDirectDraw(ddraw_stream, &ddraw3); + ok(hr == S_OK, "Got hr %#x.\n", hr); + todo_wine ok(ddraw3 == NULL, "Expected NULL, got %p.\n", ddraw3); + + hr = IDirectDrawMediaStream_SetDirectDraw(ddraw_stream, ddraw); + todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); + + if (hr == S_OK) + { + hr = IDirectDrawMediaStream_GetDirectDraw(ddraw_stream, &ddraw3); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(ddraw3 == ddraw, "Expected ddraw %p, got %p.\n", ddraw, ddraw3); + IDirectDraw_Release(ddraw3); + + hr = IDirectDrawMediaStream_CreateSample(ddraw_stream, NULL, NULL, 0, &sample); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IDirectDrawMediaStream_SetDirectDraw(ddraw_stream, ddraw); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IDirectDrawMediaStream_SetDirectDraw(ddraw_stream, ddraw2); + ok(hr == MS_E_SAMPLEALLOC, "Got hr %#x.\n", hr); + + hr = IDirectDrawMediaStream_GetDirectDraw(ddraw_stream, &ddraw3); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(ddraw3 == ddraw, "Expected ddraw %p, got %p.\n", ddraw, ddraw3); + IDirectDraw_Release(ddraw3); + + IDirectDrawStreamSample_Release(sample); + + hr = IDirectDrawMediaStream_SetDirectDraw(ddraw_stream, ddraw2); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + hr = IDirectDrawMediaStream_GetDirectDraw(ddraw_stream, &ddraw3); + ok(hr == S_OK, "Got hr %#x.\n", hr); + ok(ddraw3 == ddraw2, "Expected ddraw %p, got %p.\n", ddraw2, ddraw3); + IDirectDraw_Release(ddraw3); + } + + IDirectDrawMediaStream_Release(ddraw_stream); + IAMMediaStream_Release(stream); + IDirectDraw_Release(ddraw2); + IDirectDraw_Release(ddraw); +} + START_TEST(amstream) { HANDLE file; @@ -4524,6 +4602,7 @@ START_TEST(amstream) test_audiostreamsample_completion_status(); test_ddrawstream_initialize(); + test_ddrawstream_getsetdirectdraw(); test_ammediastream_join_am_multi_media_stream(); -- 2.27.0