diff --git a/patches/mfplat-streaming-support/definition b/patches/mfplat-streaming-support/definition index 00ba0f55..e91efdc2 100644 --- a/patches/mfplat-streaming-support/definition +++ b/patches/mfplat-streaming-support/definition @@ -1 +1,2 @@ Fixes: [49692] Multiple applications need a Media Foundation media source implementation +Disabled: True diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index a6bb9f50..0078a911 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "f232252951fec637758f6b2c4eeda1c0e0650310" + echo "8547aac2dcfcae9060d0a630c9f80af7bcaf19b4" } # Show version information @@ -137,7 +137,6 @@ patch_enable_all () enable_krnl386_exe16_Invalid_Console_Handles="$1" enable_libs_Unicode_Collation="$1" enable_loader_KeyboardLayouts="$1" - enable_mfplat_streaming_support="$1" enable_mmsystem_dll16_MIDIHDR_Refcount="$1" enable_mountmgr_DosDevices="$1" enable_mscoree_CorValidateImage="$1" @@ -449,9 +448,6 @@ patch_enable () loader-KeyboardLayouts) enable_loader_KeyboardLayouts="$2" ;; - mfplat-streaming-support) - enable_mfplat_streaming_support="$2" - ;; mmsystem.dll16-MIDIHDR_Refcount) enable_mmsystem_dll16_MIDIHDR_Refcount="$2" ;; @@ -2378,58 +2374,6 @@ if test "$enable_loader_KeyboardLayouts" -eq 1; then patch_apply loader-KeyboardLayouts/0002-user32-Improve-GetKeyboardLayoutList.patch fi -# Patchset mfplat-streaming-support -# | -# | This patchset fixes the following Wine bugs: -# | * [#49692] Multiple applications need a Media Foundation media source implementation -# | -# | Modified files: -# | * dlls/mf/topology.c, dlls/mfplat/main.c, dlls/winegstreamer/Makefile.in, dlls/winegstreamer/audioconvert.c, -# | dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/decode_transform.c, dlls/winegstreamer/gst_private.h, -# | dlls/winegstreamer/media_source.c, dlls/winegstreamer/mfplat.c, dlls/winegstreamer/quartz_parser.c, -# | dlls/winegstreamer/wg_parser.c, dlls/winegstreamer/winegstreamer_classes.idl, include/mfidl.idl, include/wmcodecdsp.idl -# | -if test "$enable_mfplat_streaming_support" -eq 1; then - patch_apply mfplat-streaming-support/0001-winegstreamer-Activate-source-pad-in-push-mode-if-it.patch - patch_apply mfplat-streaming-support/0002-winegstreamer-Push-stream-start-and-segment-events-i.patch - patch_apply mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch - patch_apply mfplat-streaming-support/0004-winegstreamer-Implement-GetInputAvailableType-for-de.patch - patch_apply mfplat-streaming-support/0005-winegstreamer-Implement-GetOutputAvailableType-for-d.patch - patch_apply mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch - patch_apply mfplat-streaming-support/0007-winegstreamer-Implement-SetOutputType-for-decode-tra.patch - patch_apply mfplat-streaming-support/0008-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch - patch_apply mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch - patch_apply mfplat-streaming-support/0010-winegstreamer-Implement-Process-Input-Output-for-dec.patch - patch_apply mfplat-streaming-support/0011-winestreamer-Implement-ProcessMessage-for-decoder-tr.patch - patch_apply mfplat-streaming-support/0012-winegstreamer-Semi-stub-GetAttributes-for-decoder-tr.patch - patch_apply mfplat-streaming-support/0013-winegstreamer-Register-the-H.264-decoder-transform.patch - patch_apply mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch - patch_apply mfplat-streaming-support/0015-winegstreamer-Register-the-AAC-decoder-transform.patch - patch_apply mfplat-streaming-support/0016-winegstreamer-Rename-GStreamer-objects-to-be-more-ge.patch - patch_apply mfplat-streaming-support/0017-winegstreamer-Report-streams-backwards-in-media-sour.patch - patch_apply mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch - patch_apply mfplat-streaming-support/0019-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch - patch_apply mfplat-streaming-support/0020-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch - patch_apply mfplat-streaming-support/0021-winegstreamer-Introduce-color-conversion-transform.patch - patch_apply mfplat-streaming-support/0022-winegstreamer-Register-the-color-conversion-transfor.patch - patch_apply mfplat-streaming-support/0023-winegstreamer-Implement-GetInputAvailableType-for-co.patch - patch_apply mfplat-streaming-support/0024-winegstreamer-Implement-SetInputType-for-color-conve.patch - patch_apply mfplat-streaming-support/0025-winegstreamer-Implement-GetOutputAvailableType-for-c.patch - patch_apply mfplat-streaming-support/0026-winegstreamer-Implement-SetOutputType-for-color-conv.patch - patch_apply mfplat-streaming-support/0027-winegstreamer-Implement-Process-Input-Output-for-col.patch - patch_apply mfplat-streaming-support/0028-winegstreamer-Implement-ProcessMessage-for-color-con.patch - patch_apply mfplat-streaming-support/0029-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch - patch_apply mfplat-streaming-support/0030-mf-topology-Forward-failure-from-SetOutputType-when-.patch - patch_apply mfplat-streaming-support/0031-winegstreamer-Handle-flush-command-in-audio-converst.patch - patch_apply mfplat-streaming-support/0032-winegstreamer-In-the-default-configuration-select-on.patch - patch_apply mfplat-streaming-support/0033-winegstreamer-Implement-MF_SD_LANGUAGE.patch - patch_apply mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch - patch_apply mfplat-streaming-support/0035-winegstreamer-Don-t-rely-on-max_size-in-unseekable-p.patch - patch_apply mfplat-streaming-support/0036-winegstreamer-Implement-MFT_MESSAGE_COMMAND_FLUSH-fo.patch - patch_apply mfplat-streaming-support/0037-winegstreamer-Default-Frame-size-if-one-isn-t-availa.patch - patch_apply mfplat-streaming-support/0038-mfplat-Stub-out-MFCreateDXGIDeviceManager-to-avoid-t.patch -fi - # Patchset mmsystem.dll16-MIDIHDR_Refcount # | # | This patchset fixes the following Wine bugs: diff --git a/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch b/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch index 6ec14aa9..755ee01e 100644 --- a/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch +++ b/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch @@ -1,17 +1,17 @@ -From c88ebdd4735d3aece4b3d30e7863f69180f431ef Mon Sep 17 00:00:00 2001 +From c3a3329a62b2d113101a507620927a64f158388f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 24 Feb 2015 04:25:29 +0100 Subject: [PATCH] shell32: Correct indentation in shfileop.c. --- - dlls/shell32/shlfileop.c | 662 +++++++++++++++++++-------------------- - 1 file changed, 330 insertions(+), 332 deletions(-) + dlls/shell32/shlfileop.c | 660 +++++++++++++++++++-------------------- + 1 file changed, 329 insertions(+), 331 deletions(-) diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c -index 78ee2d1c0..180302db2 100644 +index 941dba725cd..7b5339acc92 100644 --- a/dlls/shell32/shlfileop.c +++ b/dlls/shell32/shlfileop.c -@@ -207,108 +207,107 @@ static int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, H +@@ -210,108 +210,107 @@ static int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, H /* confirmation dialogs content */ typedef struct { @@ -208,7 +208,7 @@ index 78ee2d1c0..180302db2 100644 } BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir) -@@ -318,18 +317,18 @@ BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir) +@@ -321,18 +320,18 @@ BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir) static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minChars) { @@ -237,7 +237,7 @@ index 78ee2d1c0..180302db2 100644 } HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status) -@@ -372,8 +371,8 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI) +@@ -375,8 +374,8 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI) ret = SHNotifyRemoveDirectoryW(pszDir); return ret == ERROR_PATH_NOT_FOUND ? @@ -248,7 +248,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************** -@@ -393,41 +392,41 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI) +@@ -396,41 +395,41 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI) */ static DWORD SHNotifyCreateDirectoryA(LPCSTR path, LPSECURITY_ATTRIBUTES sec) { @@ -310,7 +310,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************ -@@ -447,51 +446,51 @@ BOOL WINAPI Win32CreateDirectoryAW(LPCVOID path, LPSECURITY_ATTRIBUTES sec) +@@ -450,51 +449,51 @@ BOOL WINAPI Win32CreateDirectoryAW(LPCVOID path, LPSECURITY_ATTRIBUTES sec) */ static DWORD SHNotifyRemoveDirectoryA(LPCSTR path) { @@ -392,7 +392,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************ -@@ -511,52 +510,52 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path) +@@ -514,52 +513,52 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path) */ static DWORD SHNotifyDeleteFileA(LPCSTR path) { @@ -475,7 +475,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************ -@@ -573,36 +572,36 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path) +@@ -576,36 +575,36 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path) */ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) { @@ -537,7 +537,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************ -@@ -621,24 +620,24 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) +@@ -624,24 +623,24 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) */ static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists) { @@ -576,7 +576,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************* -@@ -668,9 +667,9 @@ static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists) +@@ -671,9 +670,9 @@ static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists) */ DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path) { @@ -589,7 +589,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************* -@@ -707,18 +706,18 @@ DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path) +@@ -710,18 +709,18 @@ DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path) */ int WINAPI SHCreateDirectoryExA(HWND hWnd, LPCSTR path, LPSECURITY_ATTRIBUTES sec) { @@ -618,7 +618,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************* -@@ -792,25 +791,25 @@ int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES s +@@ -795,25 +794,25 @@ int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES s */ static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly) { @@ -662,7 +662,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************* -@@ -824,27 +823,27 @@ static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly) +@@ -827,27 +826,27 @@ static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly) */ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more) { @@ -710,7 +710,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************* * SHFileOperationA [SHELL32.@] -@@ -864,46 +863,45 @@ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more) +@@ -867,46 +866,45 @@ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more) */ int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp) { @@ -794,7 +794,7 @@ index 78ee2d1c0..180302db2 100644 } #define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026 -@@ -933,7 +931,7 @@ typedef struct +@@ -936,7 +934,7 @@ typedef struct static inline void grow_list(FILE_LIST *list) { FILE_ENTRY *new = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, list->feFiles, @@ -803,7 +803,7 @@ index 78ee2d1c0..180302db2 100644 list->feFiles = new; list->num_alloc *= 2; } -@@ -1026,7 +1024,7 @@ static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles) +@@ -1029,7 +1027,7 @@ static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles) /* empty list */ if (!szFiles[0]) return ERROR_ACCESS_DENIED; @@ -812,7 +812,7 @@ index 78ee2d1c0..180302db2 100644 flList->feFiles = heap_alloc_zero(flList->num_alloc * sizeof(FILE_ENTRY)); while (*ptr) -@@ -1131,7 +1129,7 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST +@@ -1134,7 +1132,7 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST /* Don't ask the user about overwriting files when he accepted to overwrite the folder. FIXME: this is not exactly what Windows does - e.g. there would be an additional confirmation for a nested folder */ @@ -821,16 +821,7 @@ index 78ee2d1c0..180302db2 100644 SHFileOperationW(&fileOp); } -@@ -1344,7 +1342,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) - - /* Windows also checks only the first item */ - bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO) -- && TRASH_CanTrashFile(flFrom->feFiles[0].szFullPath); -+ && TRASH_CanTrashFile(flFrom->feFiles[0].szFullPath); - - if (!(lpFileOp->fFlags & FOF_NOCONFIRMATION) || (!bTrash && lpFileOp->fFlags & FOF_WANTNUKEWARNING)) - if (!confirm_delete_list(lpFileOp->hwnd, lpFileOp->fFlags, bTrash, flFrom)) -@@ -1379,11 +1377,11 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) +@@ -1381,11 +1379,11 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) break; } } @@ -844,7 +835,7 @@ index 78ee2d1c0..180302db2 100644 else ret = SHELL_DeleteDirectoryW(lpFileOp->hwnd, fileEntry->szFullPath, FALSE); -@@ -1508,8 +1506,8 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con +@@ -1510,8 +1508,8 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con static void check_flags(FILEOP_FLAGS fFlags) { WORD wUnsupportedFlags = FOF_NO_CONNECTED_ELEMENTS | @@ -855,7 +846,7 @@ index 78ee2d1c0..180302db2 100644 if (fFlags & wUnsupportedFlags) FIXME("Unsupported flags: %04x\n", fFlags); -@@ -1592,19 +1590,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) +@@ -1594,19 +1592,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) */ void WINAPI SHFreeNameMappings(HANDLE hNameMapping) { @@ -885,7 +876,7 @@ index 78ee2d1c0..180302db2 100644 } /************************************************************************* -@@ -1710,14 +1708,14 @@ DWORD WINAPI SheChangeDirW(LPWSTR path) +@@ -1712,14 +1710,14 @@ DWORD WINAPI SheChangeDirW(LPWSTR path) } /************************************************************************* @@ -906,5 +897,5 @@ index 78ee2d1c0..180302db2 100644 -- -2.21.0 +2.33.0 diff --git a/patches/shell32-Progress_Dialog/0002-shell32-Pass-FILE_INFORMATION-into-SHNotify-function.patch b/patches/shell32-Progress_Dialog/0002-shell32-Pass-FILE_INFORMATION-into-SHNotify-function.patch index 2e016abf..02c4ae80 100644 --- a/patches/shell32-Progress_Dialog/0002-shell32-Pass-FILE_INFORMATION-into-SHNotify-function.patch +++ b/patches/shell32-Progress_Dialog/0002-shell32-Pass-FILE_INFORMATION-into-SHNotify-function.patch @@ -1,4 +1,4 @@ -From fdaeb6ba616ef833c275e2aa53fc06abacefc1ad Mon Sep 17 00:00:00 2001 +From 7cbc2d3a95bdbd362138638b90a24c1b2b7cacfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 26 Feb 2015 23:21:26 +0100 Subject: [PATCH] shell32: Pass FILE_INFORMATION into SHNotify* functions. @@ -9,10 +9,10 @@ Preparation of the progressbar work. Based on a patch by Huw Campbell. 1 file changed, 98 insertions(+), 103 deletions(-) diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c -index e4c7449f05e..028a1d76e4f 100644 +index 7b5339acc92..85448bad7dd 100644 --- a/dlls/shell32/shlfileop.c +++ b/dlls/shell32/shlfileop.c -@@ -59,16 +59,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); +@@ -62,16 +62,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); static const WCHAR wWildcardFile[] = {'*',0}; static const WCHAR wWildcardChars[] = {'*','?',0}; @@ -29,7 +29,7 @@ index e4c7449f05e..028a1d76e4f 100644 typedef struct { SHFILEOPSTRUCTW *req; -@@ -77,6 +67,42 @@ typedef struct +@@ -80,6 +70,42 @@ typedef struct BOOL bCancelled; } FILE_OPERATION; @@ -72,7 +72,7 @@ index e4c7449f05e..028a1d76e4f 100644 /* Confirm dialogs with an optional "Yes To All" as used in file operations confirmations */ static const WCHAR CONFIRM_MSG_PROP[] = {'W','I','N','E','_','C','O','N','F','I','R','M',0}; -@@ -343,7 +369,7 @@ HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status) +@@ -346,7 +372,7 @@ HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status) * Asks for confirmation when bShowUI is true and deletes the directory and * all its subdirectories and files if necessary. */ @@ -81,7 +81,7 @@ index e4c7449f05e..028a1d76e4f 100644 { DWORD ret = 0; HANDLE hFind; -@@ -353,16 +379,18 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI) +@@ -356,16 +382,18 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI) PathCombineW(szTemp, pszDir, wWildcardFile); hFind = FindFirstFileW(szTemp, &wfd); @@ -104,7 +104,7 @@ index e4c7449f05e..028a1d76e4f 100644 } while (!ret && FindNextFileW(hFind, &wfd)); } FindClose(hFind); -@@ -493,22 +521,9 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path) +@@ -496,22 +524,9 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path) return (SHNotifyRemoveDirectoryA(path) == ERROR_SUCCESS); } @@ -130,7 +130,7 @@ index e4c7449f05e..028a1d76e4f 100644 { LPWSTR wPath; DWORD retCode; -@@ -518,7 +533,7 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path) +@@ -521,7 +536,7 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path) retCode = SHELL32_AnsiToUnicodeBuf(path, &wPath, 0); if (!retCode) { @@ -139,7 +139,7 @@ index e4c7449f05e..028a1d76e4f 100644 heap_free(wPath); } return retCode; -@@ -526,12 +541,14 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path) +@@ -529,12 +544,14 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path) /***********************************************************************/ @@ -155,7 +155,7 @@ index e4c7449f05e..028a1d76e4f 100644 ret = DeleteFileW(path); if (!ret) { -@@ -554,8 +571,8 @@ static DWORD SHNotifyDeleteFileW(LPCWSTR path) +@@ -557,8 +574,8 @@ static DWORD SHNotifyDeleteFileW(LPCWSTR path) DWORD WINAPI Win32DeleteFileAW(LPCVOID path) { if (SHELL_OsIsUnicode()) @@ -166,7 +166,7 @@ index e4c7449f05e..028a1d76e4f 100644 } /************************************************************************ -@@ -564,18 +581,21 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path) +@@ -567,18 +584,21 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path) * Moves a file. Also triggers a change notify if one exists. * * PARAMS @@ -189,7 +189,7 @@ index e4c7449f05e..028a1d76e4f 100644 ret = MoveFileExW(src, dest, MOVEFILE_REPLACE_EXISTING); /* MOVEFILE_REPLACE_EXISTING fails with dirs, so try MoveFile */ -@@ -610,6 +630,7 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) +@@ -613,6 +633,7 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) * Copies a file. Also triggers a change notify if one exists. * * PARAMS @@ -197,7 +197,7 @@ index e4c7449f05e..028a1d76e4f 100644 * src [I] path to source file to move * dest [I] path to target file to move to * bFailIfExists [I] if TRUE, the target file will not be overwritten if -@@ -618,13 +639,15 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) +@@ -621,13 +642,15 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest) * RETURNS * ERROR_SUCCESS if successful */ @@ -214,7 +214,7 @@ index e4c7449f05e..028a1d76e4f 100644 /* Destination file may already exist with read only attribute */ attribs = GetFileAttributesW(dest); if (IsAttrib(attribs, FILE_ATTRIBUTE_READONLY)) -@@ -904,30 +927,6 @@ int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp) +@@ -907,30 +930,6 @@ int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp) return retCode; } @@ -245,7 +245,7 @@ index e4c7449f05e..028a1d76e4f 100644 static inline void grow_list(FILE_LIST *list) { FILE_ENTRY *new = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, list->feFiles, -@@ -1093,7 +1092,7 @@ static void destroy_file_list(FILE_LIST *flList) +@@ -1096,7 +1095,7 @@ static void destroy_file_list(FILE_LIST *flList) static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath) { WCHAR szFrom[MAX_PATH], szTo[MAX_PATH]; @@ -254,7 +254,7 @@ index e4c7449f05e..028a1d76e4f 100644 static const WCHAR wildCardFiles[] = {'*','.','*',0}; -@@ -1121,17 +1120,16 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST +@@ -1124,17 +1123,16 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST PathCombineW(szFrom, feFrom->szFullPath, wildCardFiles); szFrom[lstrlenW(szFrom) + 1] = '\0'; @@ -280,7 +280,7 @@ index e4c7449f05e..028a1d76e4f 100644 } static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCHAR *szTo) -@@ -1142,7 +1140,7 @@ static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCH +@@ -1145,7 +1143,7 @@ static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCH return FALSE; } @@ -289,7 +289,7 @@ index e4c7449f05e..028a1d76e4f 100644 } /* copy a file or directory to another directory */ -@@ -1182,7 +1180,7 @@ static void create_dest_dirs(LPCWSTR szDestDir) +@@ -1185,7 +1183,7 @@ static void create_dest_dirs(LPCWSTR szDestDir) } /* the FO_COPY operation */ @@ -298,7 +298,7 @@ index e4c7449f05e..028a1d76e4f 100644 { DWORD i; const FILE_ENTRY *entryToCopy; -@@ -1205,7 +1203,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl +@@ -1208,7 +1206,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl fileDest = &flTo->feFiles[0]; } @@ -307,7 +307,7 @@ index e4c7449f05e..028a1d76e4f 100644 { if (flFrom->bAnyFromWildcard) return ERROR_CANCELLED; -@@ -1257,8 +1255,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl +@@ -1260,8 +1258,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl { entryToCopy = &flFrom->feFiles[i]; @@ -317,7 +317,7 @@ index e4c7449f05e..028a1d76e4f 100644 { fileDest = &flTo->feFiles[i]; } -@@ -1330,7 +1327,7 @@ static BOOL confirm_delete_list(HWND hWnd, DWORD fFlags, BOOL fTrash, const FILE +@@ -1333,7 +1330,7 @@ static BOOL confirm_delete_list(HWND hWnd, DWORD fFlags, BOOL fTrash, const FILE } /* the FO_DELETE operation */ @@ -326,13 +326,12 @@ index e4c7449f05e..028a1d76e4f 100644 { const FILE_ENTRY *fileEntry; DWORD i; -@@ -1341,13 +1338,13 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) +@@ -1344,12 +1341,12 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) return ERROR_SUCCESS; /* Windows also checks only the first item */ -- bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO) -+ bTrash = (op->req->fFlags & FOF_ALLOWUNDO) - && TRASH_CanTrashFile(flFrom->feFiles[0].szFullPath); +- bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO) && is_trash_available(); ++ bTrash = (op->req->fFlags & FOF_ALLOWUNDO) && is_trash_available(); - if (!(lpFileOp->fFlags & FOF_NOCONFIRMATION) || (!bTrash && lpFileOp->fFlags & FOF_WANTNUKEWARNING)) - if (!confirm_delete_list(lpFileOp->hwnd, lpFileOp->fFlags, bTrash, flFrom)) @@ -344,7 +343,7 @@ index e4c7449f05e..028a1d76e4f 100644 return 0; } -@@ -1356,7 +1353,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) +@@ -1358,7 +1355,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) fileEntry = &flFrom->feFiles[i]; if (!IsAttribFile(fileEntry->attributes) && @@ -353,7 +352,7 @@ index e4c7449f05e..028a1d76e4f 100644 continue; if (bTrash) -@@ -1366,14 +1363,14 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) +@@ -1368,14 +1365,14 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) continue; /* Note: Windows silently deletes the file in such a situation, we show a dialog */ @@ -371,7 +370,7 @@ index e4c7449f05e..028a1d76e4f 100644 break; } } -@@ -1383,7 +1380,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) +@@ -1385,7 +1382,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) ret = DeleteFileW(fileEntry->szFullPath) ? ERROR_SUCCESS : GetLastError(); else @@ -380,7 +379,7 @@ index e4c7449f05e..028a1d76e4f 100644 if (ret) return ret; -@@ -1393,16 +1390,16 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) +@@ -1395,16 +1392,16 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) } /* moves a file or directory to another directory */ @@ -400,7 +399,7 @@ index e4c7449f05e..028a1d76e4f 100644 { DWORD i; INT mismatched = 0; -@@ -1415,14 +1412,12 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const +@@ -1417,14 +1414,12 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const if (!flTo->dwNumFiles) return ERROR_FILE_NOT_FOUND; @@ -417,7 +416,7 @@ index e4c7449f05e..028a1d76e4f 100644 flFrom->dwNumFiles > flTo->dwNumFiles) { return ERROR_CANCELLED; -@@ -1435,7 +1430,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const +@@ -1437,7 +1432,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const return ret; } @@ -426,7 +425,7 @@ index e4c7449f05e..028a1d76e4f 100644 mismatched = flFrom->dwNumFiles - flTo->dwNumFiles; fileDest = &flTo->feFiles[0]; -@@ -1446,7 +1441,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const +@@ -1448,7 +1443,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const if (!PathFileExistsW(fileDest->szDirectory)) return ERROR_CANCELLED; @@ -435,7 +434,7 @@ index e4c7449f05e..028a1d76e4f 100644 { if (i >= flTo->dwNumFiles) break; -@@ -1460,9 +1455,9 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const +@@ -1462,9 +1457,9 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const } if (fileDest->bExists && IsAttribDir(fileDest->attributes)) @@ -447,7 +446,7 @@ index e4c7449f05e..028a1d76e4f 100644 } if (mismatched > 0) -@@ -1477,7 +1472,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const +@@ -1479,7 +1474,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const } /* the FO_RENAME files */ @@ -456,7 +455,7 @@ index e4c7449f05e..028a1d76e4f 100644 { const FILE_ENTRY *feFrom; const FILE_ENTRY *feTo; -@@ -1499,7 +1494,7 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con +@@ -1501,7 +1496,7 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con if (feTo->bExists) return ERROR_ALREADY_EXISTS; @@ -465,7 +464,7 @@ index e4c7449f05e..028a1d76e4f 100644 } /* alert the user if an unsupported flag is used */ -@@ -1546,16 +1541,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) +@@ -1548,16 +1543,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp) switch (lpFileOp->wFunc) { case FO_COPY: @@ -487,5 +486,5 @@ index e4c7449f05e..028a1d76e4f 100644 default: ret = ERROR_INVALID_PARAMETER; -- -2.27.0 +2.33.0 diff --git a/staging/upstream-commit b/staging/upstream-commit index ab71aa57..5787bb3f 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -f232252951fec637758f6b2c4eeda1c0e0650310 +8547aac2dcfcae9060d0a630c9f80af7bcaf19b4