From bd070a400c200ba64c87b59fda505570549182b4 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 20 Apr 2017 02:16:00 +0200 Subject: [PATCH] Rebase against f7402accc40b66140be4d27c5ad1b2fee8532dfc. --- ...nt-ID3DXEffect_FindNextValidTechniqu.patch | 18 ++-- patches/patchinstall.sh | 4 +- ...ort-for-extra-large-and-jumbo-icon-l.patch | 93 ++++++++++++------- .../wined3d-CSMT_Main/9999-IfDefined.patch | 8 +- ...a-blending-in-X11DRV_UpdateLayeredWi.patch | 20 ++-- staging/VERSION | 2 +- 6 files changed, 86 insertions(+), 59 deletions(-) diff --git a/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch b/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch index a48c5644..2b87b9c7 100644 --- a/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch +++ b/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch @@ -1,4 +1,4 @@ -From 07bb6e9c60e3525ccf70f979d60f045e4300dbc4 Mon Sep 17 00:00:00 2001 +From 2f29ecad409dd3dc746c0fbb3bb5eda00c0c9a3d Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Fri, 19 Dec 2014 22:31:46 +0100 Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests. @@ -9,10 +9,10 @@ Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests. 2 files changed, 91 insertions(+), 3 deletions(-) diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c -index 813b57e1ea..3c5f7ba8b8 100644 +index 8dc4738360..47e79a689a 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c -@@ -3652,13 +3652,41 @@ static HRESULT WINAPI ID3DXEffectImpl_ValidateTechnique(ID3DXEffect* iface, D3DX +@@ -3667,13 +3667,41 @@ static HRESULT WINAPI ID3DXEffectImpl_ValidateTechnique(ID3DXEffect* iface, D3DX return D3D_OK; } @@ -58,11 +58,11 @@ index 813b57e1ea..3c5f7ba8b8 100644 static BOOL walk_parameter_dep(struct d3dx_parameter *param, walk_parameter_dep_func param_func, diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c -index de5ae69ec9..aba65d11fd 100644 +index 9c318b49ef..b8da7bc88f 100644 --- a/dlls/d3dx9_36/tests/effect.c +++ b/dlls/d3dx9_36/tests/effect.c -@@ -5681,6 +5681,65 @@ static void test_effect_state_manager(IDirect3DDevice9 *device) - ok(!refcount, "State manager was not properly freed, refcount %u.\n", refcount); +@@ -5744,6 +5744,65 @@ static void test_cross_effect_handle(IDirect3DDevice9 *device) + effect1->lpVtbl->Release(effect1); } +/* @@ -127,14 +127,14 @@ index de5ae69ec9..aba65d11fd 100644 START_TEST(effect) { HWND wnd; -@@ -5728,6 +5787,7 @@ START_TEST(effect) - test_effect_commitchanges(device); +@@ -5792,6 +5851,7 @@ START_TEST(effect) test_effect_preshader_relative_addressing(device); test_effect_state_manager(device); + test_cross_effect_handle(device); + test_effect_technique_validation(device); count = IDirect3DDevice9_Release(device); ok(count == 0, "The device was not properly freed: refcount %u\n", count); -- -2.11.0 +2.12.2 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 2537d6ca..acfc04ee 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,13 +52,13 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "709935314458bd0ce27aab3986ae98cc556cb663" + echo "f7402accc40b66140be4d27c5ad1b2fee8532dfc" } # Show version information version() { - echo "Wine Staging 2.6" + echo "Wine Staging 2.7 (unreleased)" echo "Copyright (C) 2014-2017 the Wine Staging project authors." echo "" echo "Patchset to be applied on upstream Wine:" diff --git a/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch b/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch index a5236715..e2ea71ea 100644 --- a/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch +++ b/patches/shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch @@ -1,16 +1,16 @@ -From 65740badb8194172c48dd52a17299128077d6fff Mon Sep 17 00:00:00 2001 +From caa453b8f3d106c4b360504f1639c48fc81c26f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 3 Aug 2014 02:23:44 +0200 Subject: shell32: Add support for extra large and jumbo icon lists. (v2) --- - dlls/shell32/iconcache.c | 209 ++++++++++++++++++++++++++++---------------- + dlls/shell32/iconcache.c | 228 ++++++++++++++++++++++++++++---------------- dlls/shell32/shell32_main.h | 3 + dlls/shell32/shellord.c | 28 ++++-- - 3 files changed, 159 insertions(+), 81 deletions(-) + 3 files changed, 170 insertions(+), 89 deletions(-) diff --git a/dlls/shell32/iconcache.c b/dlls/shell32/iconcache.c -index c3284a27d67..7f33131f4bd 100644 +index 737f4d5023..9105b7ab29 100644 --- a/dlls/shell32/iconcache.c +++ b/dlls/shell32/iconcache.c @@ -62,7 +62,9 @@ typedef struct @@ -94,22 +94,32 @@ index c3284a27d67..7f33131f4bd 100644 lpsice->dwListIndex = index; ret = lpsice->dwListIndex; } -@@ -305,17 +317,24 @@ static INT SIC_IconAppend (LPCWSTR sSourceFile, INT dwSourceIndex, HICON hSmallI - * gets small/big icon by number from a file +@@ -304,7 +316,7 @@ static BOOL get_imagelist_icon_size(int list, SIZE *size) + HIMAGELIST image_list; + + if (list < SHIL_LARGE || list > SHIL_SMALL) return FALSE; +- image_list = (list == SHIL_LARGE) ? ShellBigIconList : ShellSmallIconList; ++ image_list = (list == SHIL_LARGE) ? ShellLargeIconList : ShellSmallIconList; + + return ImageList_GetIconSize( image_list, &size->cx, &size->cy ); + } +@@ -317,19 +329,25 @@ static BOOL get_imagelist_icon_size(int list, SIZE *size) */ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) --{ HICON hiconLarge=0; + { +- HICON hiconLarge=0; - HICON hiconSmall=0; - HICON hiconLargeShortcut; - HICON hiconSmallShortcut; +- int ret; +- SIZE size; - -- PrivateExtractIconsW( sSourceFile, dwSourceIndex, GetSystemMetrics(SM_CXICON), -- GetSystemMetrics(SM_CYICON), &hiconLarge, 0, 1, 0 ); -- PrivateExtractIconsW( sSourceFile, dwSourceIndex, GetSystemMetrics(SM_CXSMICON), -- GetSystemMetrics(SM_CYSMICON), &hiconSmall, 0, 1, 0 ); +- get_imagelist_icon_size( SHIL_LARGE, &size ); +- PrivateExtractIconsW( sSourceFile, dwSourceIndex, size.cx, size.cy, &hiconLarge, 0, 1, 0 ); +- get_imagelist_icon_size( SHIL_SMALL, &size ); +- PrivateExtractIconsW( sSourceFile, dwSourceIndex, size.cx, size.cy, &hiconSmall, 0, 1, 0 ); - - if ( !hiconLarge || !hiconSmall) -+{ + HICON hiconSmall=0; + HICON hiconLarge=0; + HICON hiconExtraLarge=0; @@ -118,11 +128,13 @@ index c3284a27d67..7f33131f4bd 100644 + HICON hiconLargeShortcut; + HICON hiconExtraLargeShortcut; + HICON hiconJumboShortcut; ++ int ret; ++ SIZE size; + -+ PrivateExtractIconsW( sSourceFile, dwSourceIndex, GetSystemMetrics(SM_CXSMICON), -+ GetSystemMetrics(SM_CYSMICON), &hiconSmall, 0, 1, 0 ); -+ PrivateExtractIconsW( sSourceFile, dwSourceIndex, GetSystemMetrics(SM_CXICON), -+ GetSystemMetrics(SM_CYICON), &hiconLarge, 0, 1, 0 ); ++ get_imagelist_icon_size( SHIL_SMALL, &size ); ++ PrivateExtractIconsW( sSourceFile, dwSourceIndex, size.cx, size.cy, &hiconSmall, 0, 1, 0 ); ++ get_imagelist_icon_size( SHIL_LARGE, &size ); ++ PrivateExtractIconsW( sSourceFile, dwSourceIndex, size.cx, size.cy, &hiconLarge, 0, 1, 0 ); + PrivateExtractIconsW( sSourceFile, dwSourceIndex, 48, 48, &hiconExtraLarge, 0, 1, 0 ); + PrivateExtractIconsW( sSourceFile, dwSourceIndex, 256, 256, &hiconJumbo, 0, 1, 0 ); + @@ -130,7 +142,7 @@ index c3284a27d67..7f33131f4bd 100644 { WARN("failure loading icon %i from %s (%p %p)\n", dwSourceIndex, debugstr_w(sSourceFile), hiconLarge, hiconSmall); return -1; -@@ -323,38 +342,59 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) +@@ -337,44 +355,69 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) if (0 != (dwFlags & GIL_FORSHORTCUT)) { @@ -138,6 +150,16 @@ index c3284a27d67..7f33131f4bd 100644 - hiconSmallShortcut = SIC_OverlayShortcutImage(hiconSmall, FALSE); - if (NULL != hiconLargeShortcut && NULL != hiconSmallShortcut) - { +- DestroyIcon( hiconLarge ); ++ hiconSmallShortcut = SIC_OverlayShortcutImage( hiconSmall, SHIL_SMALL ); ++ hiconLargeShortcut = SIC_OverlayShortcutImage( hiconLarge, SHIL_LARGE ); ++ hiconExtraLargeShortcut = SIC_OverlayShortcutImage( hiconExtraLarge, SHIL_EXTRALARGE ); ++ hiconJumboShortcut = SIC_OverlayShortcutImage( hiconJumbo, SHIL_JUMBO ); ++ ++ if (NULL != hiconLargeShortcut && NULL != hiconSmallShortcut && ++ NULL != hiconExtraLargeShortcut && NULL != hiconJumboShortcut) ++ { + DestroyIcon( hiconSmall ); - hiconLarge = hiconLargeShortcut; - hiconSmall = hiconSmallShortcut; - } @@ -148,14 +170,10 @@ index c3284a27d67..7f33131f4bd 100644 - if (NULL != hiconSmallShortcut) DestroyIcon(hiconSmallShortcut); - dwFlags &= ~ GIL_FORSHORTCUT; - } -+ hiconSmallShortcut = SIC_OverlayShortcutImage( hiconSmall, SHIL_SMALL ); -+ hiconLargeShortcut = SIC_OverlayShortcutImage( hiconLarge, SHIL_LARGE ); -+ hiconExtraLargeShortcut = SIC_OverlayShortcutImage( hiconExtraLarge, SHIL_EXTRALARGE ); -+ hiconJumboShortcut = SIC_OverlayShortcutImage( hiconJumbo, SHIL_JUMBO ); ++ DestroyIcon( hiconLarge ); ++ DestroyIcon( hiconExtraLarge ); ++ DestroyIcon( hiconJumbo ); + -+ if (NULL != hiconLargeShortcut && NULL != hiconSmallShortcut && -+ NULL != hiconExtraLargeShortcut && NULL != hiconJumboShortcut) -+ { + hiconSmall = hiconSmallShortcut; + hiconLarge = hiconLargeShortcut; + hiconExtraLarge = hiconExtraLargeShortcut; @@ -172,10 +190,19 @@ index c3284a27d67..7f33131f4bd 100644 + } } -- return SIC_IconAppend (sSourceFile, dwSourceIndex, hiconSmall, hiconLarge, dwFlags); -+ return SIC_IconAppend( sSourceFile, dwSourceIndex, hiconSmall, hiconLarge, -+ hiconExtraLarge, hiconJumbo, dwFlags ); +- ret = SIC_IconAppend( sSourceFile, dwSourceIndex, hiconSmall, hiconLarge, dwFlags ); +- DestroyIcon( hiconLarge ); +- DestroyIcon( hiconSmall ); +- return ret; ++ ret = SIC_IconAppend( sSourceFile, dwSourceIndex, hiconSmall, hiconLarge, ++ hiconExtraLarge, hiconJumbo, dwFlags ); ++ DestroyIcon( hiconSmall ); ++ DestroyIcon( hiconLarge ); ++ DestroyIcon( hiconExtraLarge ); ++ DestroyIcon( hiconJumbo ); ++ return ret; } +- /***************************************************************************** * SIC_Initialize [internal] */ @@ -208,7 +235,7 @@ index c3284a27d67..7f33131f4bd 100644 TRACE("\n"); sic_hdpa = DPA_Create(16); -@@ -364,28 +404,36 @@ static BOOL WINAPI SIC_Initialize( INIT_ONCE *once, void *param, void **context +@@ -384,28 +427,36 @@ static BOOL WINAPI SIC_Initialize( INIT_ONCE *once, void *param, void **context return(FALSE); } @@ -265,7 +292,7 @@ index c3284a27d67..7f33131f4bd 100644 return TRUE; } -@@ -409,13 +457,17 @@ void SIC_Destroy(void) +@@ -429,13 +480,17 @@ void SIC_Destroy(void) if (sic_hdpa) DPA_DestroyCallback(sic_hdpa, sic_free, NULL ); @@ -290,7 +317,7 @@ index c3284a27d67..7f33131f4bd 100644 } /***************************************************************************** -@@ -529,10 +581,21 @@ BOOL WINAPI Shell_GetImageLists(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList +@@ -549,10 +604,21 @@ BOOL WINAPI Shell_GetImageLists(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList { TRACE("(%p,%p)\n",lpBigList,lpSmallList); InitOnceExecuteOnce( &sic_init_once, SIC_Initialize, NULL, NULL ); @@ -314,7 +341,7 @@ index c3284a27d67..7f33131f4bd 100644 * PidlToSicIndex [INTERNAL] * diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h -index bdebcba0e39..fbb8e8811ab 100644 +index bdebcba0e3..fbb8e8811a 100644 --- a/dlls/shell32/shell32_main.h +++ b/dlls/shell32/shell32_main.h @@ -235,4 +235,7 @@ static inline WCHAR *strdupW(const WCHAR *src) @@ -326,7 +353,7 @@ index bdebcba0e39..fbb8e8811ab 100644 + #endif diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c -index 1a67a5298c4..a69eee8ac0d 100644 +index 1a67a5298c..a69eee8ac0 100644 --- a/dlls/shell32/shellord.c +++ b/dlls/shell32/shellord.c @@ -2180,20 +2180,32 @@ void WINAPI SHFlushSFCache(void) @@ -371,5 +398,5 @@ index 1a67a5298c4..a69eee8ac0d 100644 if (hNew) { -- -2.11.0 +2.12.2 diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index 27f4c5d5..685af6a7 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -1556,7 +1556,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c -@@ -632,6 +632,10 @@ static void wined3d_shader_resource_view_cs_init(void *object) +@@ -713,6 +713,10 @@ static void wined3d_shader_resource_view_cs_init(void *object) debug_d3dformat(resource->format->id), debug_d3dformat(view_format->id)); } } @@ -1567,7 +1567,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c } static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view, -@@ -648,6 +652,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_ +@@ -729,6 +733,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_ wined3d_resource_incref(view->resource = resource); @@ -1577,7 +1577,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c wined3d_cs_init_object(resource->device->cs, wined3d_shader_resource_view_cs_init, view); return WINED3D_OK; -@@ -829,6 +836,10 @@ static void wined3d_unordered_access_view_cs_init(void *object) +@@ -895,6 +902,10 @@ static void wined3d_unordered_access_view_cs_init(void *object) desc, texture, view->format); } } @@ -1588,7 +1588,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c } static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view, -@@ -848,6 +859,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces +@@ -914,6 +925,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces wined3d_resource_incref(view->resource = resource); diff --git a/patches/winex11-UpdateLayeredWindow/0001-winex11-Fix-alpha-blending-in-X11DRV_UpdateLayeredWi.patch b/patches/winex11-UpdateLayeredWindow/0001-winex11-Fix-alpha-blending-in-X11DRV_UpdateLayeredWi.patch index 4cbb5a1e..b217bce7 100644 --- a/patches/winex11-UpdateLayeredWindow/0001-winex11-Fix-alpha-blending-in-X11DRV_UpdateLayeredWi.patch +++ b/patches/winex11-UpdateLayeredWindow/0001-winex11-Fix-alpha-blending-in-X11DRV_UpdateLayeredWi.patch @@ -1,4 +1,4 @@ -From 73bf4a03497e732b42fff4e5d0d63c442fd70bc0 Mon Sep 17 00:00:00 2001 +From a2c2f2fdd214dcc58263687c930cf70b08d214e5 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Tue, 24 Jan 2017 12:37:46 +0100 Subject: winex11: Fix alpha blending in X11DRV_UpdateLayeredWindow. @@ -9,7 +9,7 @@ Based on a patch by Dmitry Timoshkov. 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c -index 7408a0eb480..3f169ea296f 100644 +index ea4933f00e..7cb55e7061 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -410,14 +410,11 @@ static void sync_window_region( struct x11drv_win_data *data, HRGN win_region ) @@ -48,16 +48,16 @@ index 7408a0eb480..3f169ea296f 100644 if (data->surface) set_surface_color_key( data->surface, CLR_INVALID ); } done: -@@ -2536,7 +2533,7 @@ void CDECL X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alph - if (data) - { +@@ -2538,7 +2535,7 @@ void CDECL X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alph + set_window_visual( data, &default_visual ); + if (data->whole_window) - sync_window_opacity( data->display, data->whole_window, key, alpha, flags ); + set_window_opacity( data->display, data->whole_window, (flags & LWA_ALPHA) ? alpha : 0xff ); if (data->surface) set_surface_color_key( data->surface, (flags & LWA_COLORKEY) ? key : CLR_INVALID ); -@@ -2560,7 +2557,7 @@ void CDECL X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alph +@@ -2562,7 +2559,7 @@ void CDECL X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alph Window win = X11DRV_get_whole_window( hwnd ); if (win) { @@ -66,7 +66,7 @@ index 7408a0eb480..3f169ea296f 100644 if (flags & LWA_COLORKEY) FIXME( "LWA_COLORKEY not supported on foreign process window %p\n", hwnd ); } -@@ -2576,7 +2573,6 @@ BOOL CDECL X11DRV_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDWINDOWINFO +@@ -2578,7 +2575,6 @@ BOOL CDECL X11DRV_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDWINDOWINFO { struct window_surface *surface; struct x11drv_win_data *data; @@ -74,7 +74,7 @@ index 7408a0eb480..3f169ea296f 100644 COLORREF color_key = (info->dwFlags & ULW_COLORKEY) ? info->crKey : CLR_INVALID; char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )]; BITMAPINFO *bmi = (BITMAPINFO *)buffer; -@@ -2604,6 +2600,10 @@ BOOL CDECL X11DRV_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDWINDOWINFO +@@ -2606,6 +2602,10 @@ BOOL CDECL X11DRV_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDWINDOWINFO } else set_surface_color_key( surface, color_key ); @@ -85,7 +85,7 @@ index 7408a0eb480..3f169ea296f 100644 if (surface) window_surface_add_ref( surface ); release_win_data( data ); -@@ -2627,14 +2627,12 @@ BOOL CDECL X11DRV_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDWINDOWINFO +@@ -2629,14 +2629,12 @@ BOOL CDECL X11DRV_UpdateLayeredWindow( HWND hwnd, const UPDATELAYEREDWINDOWINFO { IntersectRect( &rect, &rect, info->prcDirty ); memcpy( src_bits, dst_bits, bmi->bmiHeader.biSizeImage ); @@ -107,5 +107,5 @@ index 7408a0eb480..3f169ea296f 100644 { memcpy( dst_bits, src_bits, bmi->bmiHeader.biSizeImage ); -- -2.11.0 +2.12.2 diff --git a/staging/VERSION b/staging/VERSION index e52b93a4..6fa96448 100644 --- a/staging/VERSION +++ b/staging/VERSION @@ -1 +1 @@ -Wine Staging 2.6 +Wine Staging 2.7 (unreleased)