From: Ziqing Hui zhui@codeweavers.com
--- dlls/mf/tests/mf.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index 743946f7fba..379bfd5c4b0 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -1971,18 +1971,23 @@ static IMFAsyncCallback *create_test_callback(BOOL check_media_event) }
#define wait_media_event(a, b, c, d, e) wait_media_event_(__LINE__, a, b, c, d, e) -static HRESULT wait_media_event_(int line, IMFMediaSession *session, IMFAsyncCallback *callback, +static HRESULT wait_media_event_(int line, void *object, IMFAsyncCallback *callback, MediaEventType expect_type, DWORD timeout, PROPVARIANT *value) { struct test_callback *impl = impl_from_IMFAsyncCallback(callback); + IMFMediaEventGenerator *event_generator; MediaEventType type; HRESULT hr, status; DWORD ret; GUID guid;
+ hr = IUnknown_QueryInterface((IUnknown *)object, &IID_IMFMediaEventGenerator, (void **)&event_generator); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + do { - hr = IMFMediaSession_BeginGetEvent(session, &impl->IMFAsyncCallback_iface, (IUnknown *)session); + hr = IMFMediaEventGenerator_BeginGetEvent(event_generator, + &impl->IMFAsyncCallback_iface, (IUnknown *)event_generator); ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); ret = WaitForSingleObject(impl->event, timeout); ok_(__FILE__, line)(ret == WAIT_OBJECT_0, "WaitForSingleObject returned %lu\n", ret); @@ -1990,6 +1995,8 @@ static HRESULT wait_media_event_(int line, IMFMediaSession *session, IMFAsyncCal ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); } while (type != expect_type);
+ IMFMediaEventGenerator_Release(event_generator); + ok_(__FILE__, line)(type == expect_type, "got type %lu\n", type);
hr = IMFMediaEvent_GetExtendedType(impl->media_event, &guid); @@ -2006,18 +2013,23 @@ static HRESULT wait_media_event_(int line, IMFMediaSession *session, IMFAsyncCal }
#define wait_media_event_until_blocking(a, b, c, d, e) wait_media_event_until_blocking_(__LINE__, a, b, c, d, e) -static HRESULT wait_media_event_until_blocking_(int line, IMFMediaSession *session, IMFAsyncCallback *callback, - MediaEventType expect_type, DWORD timeout, PROPVARIANT *value) +static HRESULT wait_media_event_until_blocking_(int line, void *object, IMFAsyncCallback *callback, + MediaEventType expect_type, DWORD timeout, PROPVARIANT *value) { struct test_callback *impl = impl_from_IMFAsyncCallback(callback); + IMFMediaEventGenerator *event_generator; MediaEventType type; HRESULT hr, status; DWORD ret; GUID guid;
+ hr = IUnknown_QueryInterface((IUnknown *)object, &IID_IMFMediaEventGenerator, (void **)&event_generator); + ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); + do { - hr = IMFMediaSession_BeginGetEvent(session, &impl->IMFAsyncCallback_iface, (IUnknown *)session); + hr = IMFMediaEventGenerator_BeginGetEvent(event_generator, + &impl->IMFAsyncCallback_iface, (IUnknown *)event_generator); ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); ret = WaitForSingleObject(impl->event, timeout); if (ret == WAIT_TIMEOUT) return WAIT_TIMEOUT; @@ -2025,6 +2037,8 @@ static HRESULT wait_media_event_until_blocking_(int line, IMFMediaSession *sessi ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr); } while (type != expect_type);
+ IMFMediaEventGenerator_Release(event_generator); + ok_(__FILE__, line)(type == expect_type, "got type %lu\n", type);
hr = IMFMediaEvent_GetExtendedType(impl->media_event, &guid);