From 3c0f6ef05f31120e9e9232ecd9a8ec62a291ba12 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 22 Nov 2013 19:54:41 +0100 Subject: [PATCH] Updated patches 7 and 10, added patch 11 to prevent problems with Silverlight --- ...ests-for-IVMRMonitorConfig-and-IVMRM.patch | 253 ++++++++++++++++++ ...ests-Add-tests-for-IVMRMonitorConfig.patch | 163 ----------- ...able-windows-when-they-are-un-mapped.patch | 18 +- ...Silverlight-problems-when-multiple-m.patch | 35 +++ 4 files changed, 297 insertions(+), 172 deletions(-) create mode 100644 patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig-and-IVMRM.patch delete mode 100644 patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig.patch create mode 100644 patches/0011-quartz-Workaround-Silverlight-problems-when-multiple-m.patch diff --git a/patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig-and-IVMRM.patch b/patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig-and-IVMRM.patch new file mode 100644 index 00000000..f7c7a30e --- /dev/null +++ b/patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig-and-IVMRM.patch @@ -0,0 +1,253 @@ +From 8c8c8c24a8c90c292c6af2c83fd2587a04492a4f Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 22 Nov 2013 18:40:59 +0100 +Subject: quartz/tests: Add tests for IVMRMonitorConfig and IVMRMonitorConfig9 + interface + +--- + dlls/quartz/tests/videorenderer.c | 210 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 205 insertions(+), 5 deletions(-) + +diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c +index ce1ac29..df45e1e 100644 +--- a/dlls/quartz/tests/videorenderer.c ++++ b/dlls/quartz/tests/videorenderer.c +@@ -22,6 +22,9 @@ + + #include "wine/test.h" + #include "dshow.h" ++#include "initguid.h" ++#include "d3d9.h" ++#include "vmr9.h" + + #define QI_SUCCEED(iface, riid, ppv) hr = IUnknown_QueryInterface(iface, &riid, (LPVOID*)&ppv); \ + ok(hr == S_OK, "IUnknown_QueryInterface returned %x\n", hr); \ +@@ -33,6 +36,8 @@ + } + + static IUnknown *pVideoRenderer = NULL; ++static IUnknown *pVMR7 = NULL; ++static IUnknown *pVMR9 = NULL; + + static int create_video_renderer(void) + { +@@ -150,16 +155,211 @@ static void test_basefilter(void) + IBaseFilter_Release(base); + } + ++static int create_vmr7(void) ++{ ++ HRESULT hr; ++ ++ hr = CoCreateInstance(&CLSID_VideoMixingRenderer, NULL, CLSCTX_INPROC_SERVER, ++ &IID_IUnknown, (LPVOID*)&pVMR7); ++ return (hr == S_OK && pVMR7 != NULL); ++} ++ ++static void release_vmr7(void) ++{ ++ HRESULT hr; ++ ++ hr = IUnknown_Release(pVMR7); ++ ok(hr == 0, "IUnknown_Release failed with %x\n", hr); ++} ++ ++static void test_monitorconfig7(void) ++{ ++ HRESULT hr; ++ IVMRMonitorConfig *pMonitorConfig = NULL; ++ VMRGUID guid; ++ VMRMONITORINFO info[8]; ++ DWORD numdev_total, numdev; ++ ++ hr = IUnknown_QueryInterface(pVMR7, &IID_IVMRMonitorConfig, (LPVOID*)&pMonitorConfig); ++ ok(hr == S_OK, "IUnknown_QueryInterface returned %x.\n", hr); ++ ok(pMonitorConfig != NULL, "pMonitorConfig is NULL.\n"); ++ if (!pMonitorConfig) goto out; ++ ++ hr = IVMRMonitorConfig_SetMonitor(pMonitorConfig, NULL); ++ ok(hr == E_POINTER, "SetMonitor returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig_GetMonitor(pMonitorConfig, NULL); ++ ok(hr == E_POINTER, "GetMonitor returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig_SetDefaultMonitor(pMonitorConfig, NULL); ++ ok(hr == E_POINTER, "SetDefaultMonitor returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig_GetDefaultMonitor(pMonitorConfig, NULL); ++ ok(hr == E_POINTER, "GetDefaultMonitor returned %x, expected E_POINTER.\n", hr); ++ ++ memset(&guid, 0, sizeof(guid)); ++ guid.pGUID = NULL; /* default DirectDraw device */ ++ hr = IVMRMonitorConfig_SetMonitor(pMonitorConfig, &guid); ++ ok(hr == S_OK, "SetMonitor failed with %x.\n", hr); ++ ++ memset(&guid, 255, sizeof(guid)); ++ hr = IVMRMonitorConfig_GetMonitor(pMonitorConfig, &guid); ++ ok(hr == S_OK, "GetMonitor failed with %x.\n", hr); ++ ok(guid.pGUID == NULL, "GetMonitor returned guid.pGUID = %p, expected NULL.\n", guid.pGUID); ++ ++ memset(&guid, 0, sizeof(guid)); ++ guid.pGUID = NULL; /* default DirectDraw device */ ++ hr = IVMRMonitorConfig_SetDefaultMonitor(pMonitorConfig, &guid); ++ ok(hr == S_OK, "SetDefaultMonitor failed with %x.\n", hr); ++ ++ memset(&guid, 255, sizeof(guid)); ++ hr = IVMRMonitorConfig_GetDefaultMonitor(pMonitorConfig, &guid); ++ ok(hr == S_OK, "GetDefaultMonitor failed with %x.\n", hr); ++ ok(guid.pGUID == NULL, "GetDefaultMonitor returned guid.pGUID = %p, expected NULL.\n", guid.pGUID); ++ ++ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, NULL, 0, NULL); ++ ok(hr == E_POINTER, "GetAvailableMonitors returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, info, 0, &numdev_total); ++ ok(hr == E_INVALIDARG, "GetAvailableMonitors returned %x, expected E_INVALIDARG.\n", hr); ++ ++ numdev_total = 0; ++ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, NULL, 0, &numdev_total); ++ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); ++ ok(numdev_total > 0, "GetAvailableMonitors returned numdev_total = %d, expected > 0.\n", numdev_total); ++ ++ /* check if its possible to provide a buffer which is too small for all entries */ ++ if (numdev_total > 1) ++ { ++ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, info, 1, &numdev); ++ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); ++ ok(numdev == 1, "GetAvailableMonitors returned numdev = %d, expected 1.\n", numdev); ++ } ++ ++ /* don't request information for more monitors than memory available */ ++ if (numdev_total > sizeof(info)/sizeof(info[0])) ++ numdev_total = sizeof(info)/sizeof(info[0]); ++ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, info, numdev_total, &numdev); ++ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); ++ ok(numdev == numdev_total, "GetAvailableMonitors returned numdev = %d, expected %d.\n", numdev, numdev_total); ++ ++ /* TODO: Add more tests for content of info */ ++ ++out: ++ if (pMonitorConfig) IVMRMonitorConfig_Release(pMonitorConfig); ++} ++ ++static int create_vmr9(void) ++{ ++ HRESULT hr; ++ ++ hr = CoCreateInstance(&CLSID_VideoMixingRenderer9, NULL, CLSCTX_INPROC_SERVER, ++ &IID_IUnknown, (LPVOID*)&pVMR9); ++ return (hr == S_OK && pVMR7 != NULL); ++} ++ ++static void release_vmr9(void) ++{ ++ HRESULT hr; ++ ++ hr = IUnknown_Release(pVMR9); ++ ok(hr == 0, "IUnknown_Release failed with %x\n", hr); ++} ++ ++static void test_monitorconfig9(void) ++{ ++ HRESULT hr; ++ IVMRMonitorConfig9 *pMonitorConfig = NULL; ++ UINT uDev; ++ VMR9MonitorInfo info[8]; ++ DWORD numdev_total, numdev; ++ ++ hr = IUnknown_QueryInterface(pVMR9, &IID_IVMRMonitorConfig9, (LPVOID*)&pMonitorConfig); ++ ok(hr == S_OK, "IUnknown_QueryInterface returned %x.\n", hr); ++ ok(pMonitorConfig != NULL, "pMonitorConfig is NULL.\n"); ++ if (!pMonitorConfig) goto out; ++ ++ hr = IVMRMonitorConfig9_GetMonitor(pMonitorConfig, NULL); ++ ok(hr == E_POINTER, "GetMonitor returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig9_GetDefaultMonitor(pMonitorConfig, NULL); ++ ok(hr == E_POINTER, "GetDefaultMonitor returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig9_SetMonitor(pMonitorConfig, 0); ++ ok(hr == S_OK, "SetMonitor failed with %x.\n", hr); ++ ++ uDev = 0xdeadbeef; ++ hr = IVMRMonitorConfig9_GetMonitor(pMonitorConfig, &uDev); ++ ok(hr == S_OK, "GetMonitor failed with %x.\n", hr); ++ ok(uDev == 0, "GetMonitor returned uDev = %d, expected 0.\n", uDev); ++ ++ hr = IVMRMonitorConfig9_SetDefaultMonitor(pMonitorConfig, 0); ++ ok(hr == S_OK, "SetDefaultMonitor failed with %x.\n", hr); ++ ++ uDev = 0xdeadbeef; ++ hr = IVMRMonitorConfig9_GetDefaultMonitor(pMonitorConfig, &uDev); ++ ok(hr == S_OK, "GetDefaultMonitor failed with %x.\n", hr); ++ ok(uDev == 0, "GetDefaultMonitor returned uDev = %d, expected 0.\n", uDev); ++ ++ hr = IVMRMonitorConfig9_GetAvailableMonitors(pMonitorConfig, NULL, 0, NULL); ++ ok(hr == E_POINTER, "GetAvailableMonitors returned %x, expected E_POINTER.\n", hr); ++ ++ hr = IVMRMonitorConfig9_GetAvailableMonitors(pMonitorConfig, info, 0, &numdev_total); ++ ok(hr == E_INVALIDARG, "GetAvailableMonitors returned %x, expected E_INVALIDARG.\n", hr); ++ ++ numdev_total = 0; ++ hr = IVMRMonitorConfig9_GetAvailableMonitors(pMonitorConfig, NULL, 0, &numdev_total); ++ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); ++ ok(numdev_total > 0, "GetAvailableMonitors returned numdev_total = %d, expected > 0.\n", numdev_total); ++ ++ /* check if its possible to provide a buffer which is too small for all entries */ ++ if (numdev_total > 1) ++ { ++ hr = IVMRMonitorConfig9_GetAvailableMonitors(pMonitorConfig, info, 1, &numdev); ++ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); ++ ok(numdev == 1, "GetAvailableMonitors returned numdev = %d, expected 1.\n", numdev); ++ } ++ ++ if (numdev_total > sizeof(info)/sizeof(info[0])) ++ numdev_total = sizeof(info)/sizeof(info[0]); ++ hr = IVMRMonitorConfig9_GetAvailableMonitors(pMonitorConfig, info, numdev_total, &numdev); ++ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); ++ ok(numdev == numdev_total, "GetAvailableMonitors returned numdev = %d, expected %d.\n", numdev, numdev_total); ++ ++ /* TODO: Add more tests for content of info */ ++ ++out: ++ if (pMonitorConfig) IVMRMonitorConfig9_Release(pMonitorConfig); ++} ++ + START_TEST(videorenderer) + { + CoInitialize(NULL); +- if (!create_video_renderer()) +- return; + +- test_query_interface(); +- test_basefilter(); ++ /* Video Renderer tests */ ++ if (create_video_renderer()) ++ { ++ test_query_interface(); ++ test_basefilter(); ++ release_video_renderer(); ++ }else ++ skip("VideoRenderer is not available.\n"); ++ ++ /* Video Mixing Renderer 7 tests */ ++ if (create_vmr7()) ++ { ++ test_monitorconfig7(); ++ release_vmr7(); ++ }else ++ skip("VideoMixingRenderer7 is not available.\n"); + +- release_video_renderer(); ++ /* Video Mixing Renderer 9 tests */ ++ if (create_vmr9()) ++ { ++ test_monitorconfig9(); ++ release_vmr9(); ++ }else ++ skip("VideoMixingRenderer9 is not available.\n"); + + CoUninitialize(); + } +-- +1.7.9.5 + diff --git a/patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig.patch b/patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig.patch deleted file mode 100644 index 030a1eee..00000000 --- a/patches/0007-quartz-tests-Add-tests-for-IVMRMonitorConfig.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 4c261ca7ce6d73f0820106804797dcc7f0912b62 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -Date: Mon, 11 Nov 2013 00:18:31 +0100 -Subject: quartz/tests: Add tests for IVMRMonitorConfig - ---- - dlls/quartz/tests/Makefile.in | 1 + - dlls/quartz/tests/monitorconfig.c | 131 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 132 insertions(+) - create mode 100644 dlls/quartz/tests/monitorconfig.c - -diff --git a/dlls/quartz/tests/Makefile.in b/dlls/quartz/tests/Makefile.in -index ae5fbac..94b2f44 100644 ---- a/dlls/quartz/tests/Makefile.in -+++ b/dlls/quartz/tests/Makefile.in -@@ -8,6 +8,7 @@ C_SRCS = \ - filtermapper.c \ - memallocator.c \ - misc.c \ -+ monitorconfig.c \ - referenceclock.c \ - videorenderer.c - -diff --git a/dlls/quartz/tests/monitorconfig.c b/dlls/quartz/tests/monitorconfig.c -new file mode 100644 -index 0000000..3a18460 ---- /dev/null -+++ b/dlls/quartz/tests/monitorconfig.c -@@ -0,0 +1,131 @@ -+/* -+ * MonitorConfig unit tests for Quartz -+ * -+ * Copyright (C) 2013 Sebastian Lackner -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+ */ -+ -+#define COBJMACROS -+ -+#include "wine/test.h" -+#include "dshow.h" -+ -+static void test_monitorconfig_setmonitor(void) -+{ -+ HRESULT hr; -+ IUnknown *pVMR = NULL; -+ IVMRMonitorConfig *pMonitorConfig = NULL; -+ VMRGUID guid; -+ -+ hr = CoCreateInstance(&CLSID_VideoMixingRenderer, NULL, CLSCTX_INPROC_SERVER, -+ &IID_IUnknown, (LPVOID*)&pVMR); -+ ok(hr == S_OK, "CoCreateInstance failed with %x.\n", hr); -+ ok(pVMR != NULL, "pVMR is NULL.\n"); -+ if (!pVMR) goto out; -+ -+ hr = IUnknown_QueryInterface(pVMR, &IID_IVMRMonitorConfig, (LPVOID*)&pMonitorConfig); -+ ok(hr == S_OK, "IUnknown_QueryInterface returned %x.\n", hr); -+ ok(pMonitorConfig != NULL, "pMonitorConfig is NULL.\n"); -+ if (!pMonitorConfig) goto out; -+ -+ memset(&guid, 0, sizeof(guid)); -+ guid.pGUID = NULL; /* default DirectDraw device */ -+ hr = IVMRMonitorConfig_SetMonitor(pMonitorConfig, &guid); -+ ok(hr == S_OK, "SetMonitor failed with %x.\n", hr); -+ -+ memset(&guid, 255, sizeof(guid)); -+ hr = IVMRMonitorConfig_GetMonitor(pMonitorConfig, &guid); -+ ok(hr == S_OK, "GetMonitor failed with %x.\n", hr); -+ ok(guid.pGUID == NULL, "GetMonitor returned guid.pGUID = %p, expected NULL.\n", guid.pGUID); -+ -+ memset(&guid, 0, sizeof(guid)); -+ guid.pGUID = NULL; /* default DirectDraw device */ -+ hr = IVMRMonitorConfig_SetDefaultMonitor(pMonitorConfig, &guid); -+ ok(hr == S_OK, "SetDefaultMonitor failed with %x.\n", hr); -+ -+ memset(&guid, 255, sizeof(guid)); -+ hr = IVMRMonitorConfig_GetDefaultMonitor(pMonitorConfig, &guid); -+ ok(hr == S_OK, "GetDefaultMonitor failed with %x.\n", hr); -+ ok(guid.pGUID == NULL, "GetDefaultMonitor returned guid.pGUID = %p, expected NULL.\n", guid.pGUID); -+ -+out: -+ if (pMonitorConfig) IVMRMonitorConfig_Release(pMonitorConfig); -+ if (pVMR) IUnknown_Release(pVMR); -+} -+ -+static void test_monitorconfig_getavailablemonitors(void) -+{ -+ HRESULT hr; -+ IUnknown *pVMR = NULL; -+ IVMRMonitorConfig *pMonitorConfig = NULL; -+ VMRMONITORINFO info[8]; -+ DWORD numdev_total, numdev; -+ -+ hr = CoCreateInstance(&CLSID_VideoMixingRenderer, NULL, CLSCTX_INPROC_SERVER, -+ &IID_IUnknown, (LPVOID*)&pVMR); -+ ok(hr == S_OK, "CoCreateInstance failed with %x.\n", hr); -+ ok(pVMR != NULL, "pVMR is NULL.\n"); -+ if (!pVMR) goto out; -+ -+ hr = IUnknown_QueryInterface(pVMR, &IID_IVMRMonitorConfig, (LPVOID*)&pMonitorConfig); -+ ok(hr == S_OK, "IUnknown_QueryInterface returned %x.\n", hr); -+ ok(pMonitorConfig != NULL, "pMonitorConfig is NULL.\n"); -+ if (!pMonitorConfig) goto out; -+ -+ /* call without any arguments */ -+ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, NULL, 0, NULL); -+ ok(hr == E_POINTER, "GetAvailableMonitors returned %x, expected E_POINTER.\n", hr); -+ -+ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, info, 0, &numdev_total); -+ ok(hr == E_INVALIDARG, "GetAvailableMonitors returned %x, expected E_INVALIDARG.\n", hr); -+ -+ numdev_total = 0; -+ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, NULL, 0, &numdev_total); -+ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); -+ ok(numdev_total > 0, "GetAvailableMonitors returned numdev_total = %d, expected > 0.\n", numdev_total); -+ -+ if (numdev_total > 1) -+ { -+ /* return just the first monitor */ -+ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, info, 1, &numdev); -+ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); -+ ok(numdev == 1, "GetAvailableMonitors returned numdev = %d, expected 1.\n", numdev); -+ } -+ -+ /* don't request information for more monitors than memory available */ -+ if (numdev_total > sizeof(info)/sizeof(VMRMONITORINFO)) -+ numdev_total = sizeof(info)/sizeof(VMRMONITORINFO); -+ -+ hr = IVMRMonitorConfig_GetAvailableMonitors(pMonitorConfig, info, numdev_total, &numdev); -+ ok(hr == S_OK, "GetAvailableMonitors failed with %x.\n", hr); -+ ok(numdev == numdev_total, "GetAvailableMonitors returned numdev = %d, expected %d.\n", numdev, numdev_total); -+ -+ /* TODO: Add test for content of info */ -+ -+out: -+ if (pMonitorConfig) IVMRMonitorConfig_Release(pMonitorConfig); -+ if (pVMR) IUnknown_Release(pVMR); -+} -+ -+START_TEST(monitorconfig) -+{ -+ CoInitialize(NULL); -+ -+ test_monitorconfig_setmonitor(); -+ test_monitorconfig_getavailablemonitors(); -+ -+ CoUninitialize(); -+} --- -1.7.9.5 - diff --git a/patches/0010-winex11-Enable-disable-windows-when-they-are-un-mapped.patch b/patches/0010-winex11-Enable-disable-windows-when-they-are-un-mapped.patch index cd45041e..3e40a152 100644 --- a/patches/0010-winex11-Enable-disable-windows-when-they-are-un-mapped.patch +++ b/patches/0010-winex11-Enable-disable-windows-when-they-are-un-mapped.patch @@ -1,7 +1,7 @@ -From c80b095c919dcc976955f258fe177a2b24fd8dea Mon Sep 17 00:00:00 2001 +From 90f7d78cf1ee2bf4329b298cb24e0e5145637557 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner -Date: Mon, 28 Oct 2013 00:39:17 +0100 -Subject: winex11: Enable/disable windows when they are (un)mapped by foreign +Date: Fri, 22 Nov 2013 18:54:18 +0100 +Subject: winex11: Enable/disable windows when they are (un)mapped by foreign applications --- @@ -9,10 +9,10 @@ Subject: winex11: Enable/disable windows when they are (un)mapped by foreign 1 file changed, 17 insertions(+) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c -index df27468..9d958c0 100644 +index 767c003..f39b922 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c -@@ -929,6 +929,7 @@ static void X11DRV_Expose( HWND hwnd, XEvent *xev ) +@@ -922,6 +922,7 @@ static void X11DRV_Expose( HWND hwnd, XEvent *xev ) static void X11DRV_MapNotify( HWND hwnd, XEvent *event ) { struct x11drv_win_data *data; @@ -20,9 +20,9 @@ index df27468..9d958c0 100644 if (event->xany.window == x11drv_thread_data()->clip_window) { -@@ -943,7 +944,12 @@ static void X11DRV_MapNotify( HWND hwnd, XEvent *event ) +@@ -936,7 +937,12 @@ static void X11DRV_MapNotify( HWND hwnd, XEvent *event ) if (hwndFocus && IsChild( hwnd, hwndFocus )) - set_input_focus( hwnd ); + set_input_focus( data ); } + + is_embedded = data->embedded; @@ -33,7 +33,7 @@ index df27468..9d958c0 100644 } -@@ -952,7 +958,18 @@ static void X11DRV_MapNotify( HWND hwnd, XEvent *event ) +@@ -945,7 +951,18 @@ static void X11DRV_MapNotify( HWND hwnd, XEvent *event ) */ static void X11DRV_UnmapNotify( HWND hwnd, XEvent *event ) { @@ -46,7 +46,7 @@ index df27468..9d958c0 100644 + + is_embedded = data->embedded; + release_win_data( data ); -+ ++ + if (is_embedded) + EnableWindow( hwnd, FALSE ); } diff --git a/patches/0011-quartz-Workaround-Silverlight-problems-when-multiple-m.patch b/patches/0011-quartz-Workaround-Silverlight-problems-when-multiple-m.patch new file mode 100644 index 00000000..8413bcd3 --- /dev/null +++ b/patches/0011-quartz-Workaround-Silverlight-problems-when-multiple-m.patch @@ -0,0 +1,35 @@ +From c586d47aabf8741b8526579868c691e77ff5f7c8 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Thu, 21 Nov 2013 03:37:31 +0100 +Subject: quartz: Workaround Silverlight problems when multiple monitors are + found + +--- + dlls/quartz/vmr9.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c +index 31f3f8e..20da5b9 100644 +--- a/dlls/quartz/vmr9.c ++++ b/dlls/quartz/vmr9.c +@@ -1440,7 +1440,7 @@ static HRESULT WINAPI VMR7MonitorConfig_GetAvailableMonitors(IVMRMonitorConfig * + + args.info7 = info; + args.info9 = NULL; +- args.arraysize = arraysize; ++ args.arraysize = 1; /* only return first entry */ + args.numdev = 0; + EnumDisplayMonitors(NULL, NULL, get_available_monitors_proc, (LPARAM)&args); + +@@ -1540,7 +1540,7 @@ static HRESULT WINAPI VMR9MonitorConfig_GetAvailableMonitors(IVMRMonitorConfig9 + + args.info7 = NULL; + args.info9 = info; +- args.arraysize = arraysize; ++ args.arraysize = 1; /* only return first entry */ + args.numdev = 0; + EnumDisplayMonitors(NULL, NULL, get_available_monitors_proc, (LPARAM)&args); + +-- +1.7.9.5 +