[PATCH 0/4] MR2762: quartz: Check whether the pin is connected in some more video window methods.
From: Zebediah Figura <zfigura(a)codeweavers.com> Ferro CCTV calls this. --- dlls/quartz/tests/videorenderer.c | 3 +++ dlls/quartz/tests/vmr7.c | 3 +++ dlls/quartz/tests/vmr9.c | 3 +++ dlls/quartz/window.c | 3 +++ 4 files changed, 12 insertions(+) diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index 7771c467a13..4b8bd4e7c2c 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -2396,6 +2396,9 @@ static void test_video_window(void) hr = IVideoWindow_put_AutoShow(window, OAFALSE); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_Owner(window, (OAHWND)our_hwnd); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c index cbab6eb077d..73e7ff5ffe9 100644 --- a/dlls/quartz/tests/vmr7.c +++ b/dlls/quartz/tests/vmr7.c @@ -2395,6 +2395,9 @@ static void test_video_window(void) hr = IVideoWindow_put_AutoShow(window, OAFALSE); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_Owner(window, (OAHWND)our_hwnd); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c index 9c5ec2129a3..27117db9f02 100644 --- a/dlls/quartz/tests/vmr9.c +++ b/dlls/quartz/tests/vmr9.c @@ -2621,6 +2621,9 @@ static void test_video_window(void) hr = IVideoWindow_put_AutoShow(window, OAFALSE); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_Owner(window, (OAHWND)our_hwnd); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/window.c b/dlls/quartz/window.c index 617d45b74e0..f09dd5aea56 100644 --- a/dlls/quartz/window.c +++ b/dlls/quartz/window.c @@ -482,6 +482,9 @@ HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND owner TRACE("window %p, owner %#Ix.\n", window, owner); + if (!window->pPin->peer) + return VFW_E_NOT_CONNECTED; + /* Make sure we are marked as WS_CHILD before reparenting ourselves, so that * we do not steal focus. LEGO Island depends on this. */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2762
From: Zebediah Figura <zfigura(a)codeweavers.com> Ferro CCTV calls this. --- dlls/quartz/tests/videorenderer.c | 3 +++ dlls/quartz/tests/vmr7.c | 3 +++ dlls/quartz/tests/vmr9.c | 3 +++ dlls/quartz/window.c | 9 ++++++--- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index 4b8bd4e7c2c..76088534924 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -2399,6 +2399,9 @@ static void test_video_window(void) hr = IVideoWindow_put_Owner(window, (OAHWND)our_hwnd); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_MessageDrain(window, (OAHWND)our_hwnd); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c index 73e7ff5ffe9..04bf7c1ba1b 100644 --- a/dlls/quartz/tests/vmr7.c +++ b/dlls/quartz/tests/vmr7.c @@ -2398,6 +2398,9 @@ static void test_video_window(void) hr = IVideoWindow_put_Owner(window, (OAHWND)our_hwnd); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_MessageDrain(window, (OAHWND)our_hwnd); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c index 27117db9f02..299b0de22d5 100644 --- a/dlls/quartz/tests/vmr9.c +++ b/dlls/quartz/tests/vmr9.c @@ -2624,6 +2624,9 @@ static void test_video_window(void) hr = IVideoWindow_put_Owner(window, (OAHWND)our_hwnd); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_MessageDrain(window, (OAHWND)our_hwnd); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/window.c b/dlls/quartz/window.c index f09dd5aea56..1b6d2664a10 100644 --- a/dlls/quartz/window.c +++ b/dlls/quartz/window.c @@ -511,11 +511,14 @@ HRESULT WINAPI BaseControlWindowImpl_get_Owner(IVideoWindow *iface, OAHWND *Owne HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain) { - struct video_window *This = impl_from_IVideoWindow(iface); + struct video_window *window = impl_from_IVideoWindow(iface); + + TRACE("window %p, drain %#Ix.\n", window, Drain); - TRACE("window %p, drain %#Ix.\n", This, Drain); + if (!window->pPin->peer) + return VFW_E_NOT_CONNECTED; - This->hwndDrain = (HWND)Drain; + window->hwndDrain = (HWND)Drain; return S_OK; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2762
From: Zebediah Figura <zfigura(a)codeweavers.com> Ferro CCTV calls this. --- dlls/quartz/tests/videorenderer.c | 3 +++ dlls/quartz/tests/vmr7.c | 3 +++ dlls/quartz/tests/vmr9.c | 3 +++ dlls/quartz/window.c | 3 +++ 4 files changed, 12 insertions(+) diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index 76088534924..edc4d40f19d 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -2402,6 +2402,9 @@ static void test_video_window(void) hr = IVideoWindow_put_MessageDrain(window, (OAHWND)our_hwnd); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_Visible(window, OATRUE); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c index 04bf7c1ba1b..7282458dc33 100644 --- a/dlls/quartz/tests/vmr7.c +++ b/dlls/quartz/tests/vmr7.c @@ -2401,6 +2401,9 @@ static void test_video_window(void) hr = IVideoWindow_put_MessageDrain(window, (OAHWND)our_hwnd); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_Visible(window, OATRUE); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c index 299b0de22d5..c201d316bab 100644 --- a/dlls/quartz/tests/vmr9.c +++ b/dlls/quartz/tests/vmr9.c @@ -2627,6 +2627,9 @@ static void test_video_window(void) hr = IVideoWindow_put_MessageDrain(window, (OAHWND)our_hwnd); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_put_Visible(window, OATRUE); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/window.c b/dlls/quartz/window.c index 1b6d2664a10..130194bcc29 100644 --- a/dlls/quartz/window.c +++ b/dlls/quartz/window.c @@ -350,6 +350,9 @@ HRESULT WINAPI BaseControlWindowImpl_put_Visible(IVideoWindow *iface, LONG visib TRACE("window %p, visible %ld.\n", window, visible); + if (!window->pPin->peer) + return VFW_E_NOT_CONNECTED; + ShowWindow(window->hwnd, visible ? SW_SHOW : SW_HIDE); return S_OK; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2762
From: Zebediah Figura <zfigura(a)codeweavers.com> Ferro CCTV calls this. --- dlls/quartz/tests/videorenderer.c | 3 +++ dlls/quartz/tests/vmr7.c | 3 +++ dlls/quartz/tests/vmr9.c | 3 +++ dlls/quartz/window.c | 3 +++ 4 files changed, 12 insertions(+) diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c index edc4d40f19d..ea54ec87a8e 100644 --- a/dlls/quartz/tests/videorenderer.c +++ b/dlls/quartz/tests/videorenderer.c @@ -2405,6 +2405,9 @@ static void test_video_window(void) hr = IVideoWindow_put_Visible(window, OATRUE); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_SetWindowPosition(window, 100, 200, 300, 400); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c index 7282458dc33..c30fefbd3ab 100644 --- a/dlls/quartz/tests/vmr7.c +++ b/dlls/quartz/tests/vmr7.c @@ -2404,6 +2404,9 @@ static void test_video_window(void) hr = IVideoWindow_put_Visible(window, OATRUE); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_SetWindowPosition(window, 100, 200, 300, 400); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c index c201d316bab..9d88afb295d 100644 --- a/dlls/quartz/tests/vmr9.c +++ b/dlls/quartz/tests/vmr9.c @@ -2630,6 +2630,9 @@ static void test_video_window(void) hr = IVideoWindow_put_Visible(window, OATRUE); ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + hr = IVideoWindow_SetWindowPosition(window, 100, 200, 300, 400); + ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr); + testfilter_init(&source); IFilterGraph2_AddFilter(graph, &source.filter.IBaseFilter_iface, NULL); IFilterGraph2_AddFilter(graph, filter, NULL); diff --git a/dlls/quartz/window.c b/dlls/quartz/window.c index 130194bcc29..4a9c4aed8f7 100644 --- a/dlls/quartz/window.c +++ b/dlls/quartz/window.c @@ -598,6 +598,9 @@ HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition(IVideoWindow *iface, TRACE("window %p, left %ld, top %ld, width %ld, height %ld.\n", window, left, top, width, height); + if (!window->pPin->peer) + return VFW_E_NOT_CONNECTED; + if (!SetWindowPos(window->hwnd, NULL, left, top, width, height, SWP_NOACTIVATE | SWP_NOZORDER)) return E_FAIL; return S_OK; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2762
Hi, It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated. The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=132481 Your paranoid android. === build (build log) === error: patch failed: dlls/quartz/tests/videorenderer.c:2396 error: patch failed: dlls/quartz/tests/vmr7.c:2395 error: patch failed: dlls/quartz/tests/vmr9.c:2621 error: patch failed: dlls/quartz/tests/videorenderer.c:2399 error: patch failed: dlls/quartz/tests/vmr7.c:2398 error: patch failed: dlls/quartz/tests/vmr9.c:2624 error: patch failed: dlls/quartz/tests/videorenderer.c:2402 error: patch failed: dlls/quartz/tests/vmr7.c:2401 error: patch failed: dlls/quartz/tests/vmr9.c:2627 error: patch failed: dlls/quartz/tests/videorenderer.c:2405 error: patch failed: dlls/quartz/tests/vmr7.c:2404 error: patch failed: dlls/quartz/tests/vmr9.c:2630 Task: Patch failed to apply === debian11 (build log) === error: patch failed: dlls/quartz/tests/videorenderer.c:2396 error: patch failed: dlls/quartz/tests/vmr7.c:2395 error: patch failed: dlls/quartz/tests/vmr9.c:2621 error: patch failed: dlls/quartz/tests/videorenderer.c:2399 error: patch failed: dlls/quartz/tests/vmr7.c:2398 error: patch failed: dlls/quartz/tests/vmr9.c:2624 error: patch failed: dlls/quartz/tests/videorenderer.c:2402 error: patch failed: dlls/quartz/tests/vmr7.c:2401 error: patch failed: dlls/quartz/tests/vmr9.c:2627 error: patch failed: dlls/quartz/tests/videorenderer.c:2405 error: patch failed: dlls/quartz/tests/vmr7.c:2404 error: patch failed: dlls/quartz/tests/vmr9.c:2630 Task: Patch failed to apply === debian11b (build log) === error: patch failed: dlls/quartz/tests/videorenderer.c:2396 error: patch failed: dlls/quartz/tests/vmr7.c:2395 error: patch failed: dlls/quartz/tests/vmr9.c:2621 error: patch failed: dlls/quartz/tests/videorenderer.c:2399 error: patch failed: dlls/quartz/tests/vmr7.c:2398 error: patch failed: dlls/quartz/tests/vmr9.c:2624 error: patch failed: dlls/quartz/tests/videorenderer.c:2402 error: patch failed: dlls/quartz/tests/vmr7.c:2401 error: patch failed: dlls/quartz/tests/vmr9.c:2627 error: patch failed: dlls/quartz/tests/videorenderer.c:2405 error: patch failed: dlls/quartz/tests/vmr7.c:2404 error: patch failed: dlls/quartz/tests/vmr9.c:2630 Task: Patch failed to apply
participants (3)
-
Marvin -
Zebediah Figura -
Zebediah Figura (@zfigura)