diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index ab2b4f9e0d4..b157700a92b 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -2606,6 +2606,7 @@ static void test_basic_video(void) UINT count; ULONG ref; IPin *pin; + RECT rect; IBaseFilter_QueryInterface(filter, &IID_IBasicVideo, (void **)&video); IBaseFilter_FindPin(filter, L"In", &pin); @@ -2722,6 +2723,23 @@ static void test_basic_video(void) test_basic_video_source(video); test_basic_video_destination(video); + hr = IFilterGraph2_Disconnect(graph, &source.source.pin.IPin_iface); + ok(hr == S_OK, "Got hr %#x.\n", hr); + hr = IFilterGraph2_Disconnect(graph, pin); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + vih.bmiHeader.biWidth = 16; + vih.bmiHeader.biHeight = 16; + hr = IFilterGraph2_ConnectDirect(graph, &source.source.pin.IPin_iface, pin, &req_mt); + ok(hr == S_OK, "Got hr %#x.\n", hr); + + check_source_position(video, 0, 0, 16, 16); + + SetRect(&rect, 0, 0, 0, 0); + AdjustWindowRectEx(&rect, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW, FALSE, 0); + check_destination_position(video, 0, 0, max(16, GetSystemMetrics(SM_CXMIN) - (rect.right - rect.left)), + max(16, GetSystemMetrics(SM_CYMIN) - (rect.bottom - rect.top))); + ref = IFilterGraph2_Release(graph); ok(!ref, "Got outstanding refcount %d.\n", ref); IBasicVideo_Release(video); diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index e004d0fc214..f6eebc9ef9d 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -225,12 +225,13 @@ static HRESULT video_renderer_connect(struct strmbase_renderer *iface, const AM_ filter->VideoWidth = bitmap_header->biWidth; filter->VideoHeight = abs(bitmap_header->biHeight); SetRect(&rect, 0, 0, filter->VideoWidth, filter->VideoHeight); - filter->window.src = filter->window.dst = rect; + filter->window.src = rect; AdjustWindowRectEx(&rect, GetWindowLongW(window, GWL_STYLE), FALSE, GetWindowLongW(window, GWL_EXSTYLE)); SetWindowPos(window, NULL, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); + GetClientRect(window, &filter->window.dst); return S_OK; }