diff --git a/patches/advapi32-Token_Integrity_Level/0002-server-Implement-token-elevation-information.patch b/patches/advapi32-Token_Integrity_Level/0002-server-Implement-token-elevation-information.patch index dd7e1bb5..146bf79e 100644 --- a/patches/advapi32-Token_Integrity_Level/0002-server-Implement-token-elevation-information.patch +++ b/patches/advapi32-Token_Integrity_Level/0002-server-Implement-token-elevation-information.patch @@ -1,7 +1,7 @@ -From 4b428e09733605affb987d369f56ec09d2525858 Mon Sep 17 00:00:00 2001 +From c8dc0ec6406e8449b59c219ede2e9bd88d8a56fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 5 Aug 2017 00:26:03 +0200 -Subject: server: Implement token elevation information. +Subject: [PATCH] server: Implement token elevation information. --- dlls/ntdll/nt.c | 16 ++++++++++++---- @@ -10,10 +10,10 @@ Subject: server: Implement token elevation information. 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c -index 5822dec9b15..dda6cabe1cf 100644 +index cd271fde9c..b1dd999cf5 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c -@@ -597,18 +597,26 @@ NTSTATUS WINAPI NtQueryInformationToken( +@@ -625,18 +625,26 @@ NTSTATUS WINAPI NtQueryInformationToken( SERVER_END_REQ; break; case TokenElevationType: @@ -45,10 +45,10 @@ index 5822dec9b15..dda6cabe1cf 100644 case TokenSessionId: { diff --git a/server/protocol.def b/server/protocol.def -index b3dce66eb9c..33f1d5f0ab8 100644 +index 90af9df7f4..93afaabca1 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -3673,6 +3673,14 @@ struct handle_info +@@ -3643,6 +3643,14 @@ struct handle_info @END @@ -64,10 +64,10 @@ index b3dce66eb9c..33f1d5f0ab8 100644 @REQ(create_completion) unsigned int access; /* desired access to a port */ diff --git a/server/token.c b/server/token.c -index 7ab0f634c05..6a1085bae12 100644 +index 6d193603b4..64f20e1b57 100644 --- a/server/token.c +++ b/server/token.c -@@ -126,6 +126,7 @@ struct token +@@ -112,6 +112,7 @@ struct token ACL *default_dacl; /* the default DACL to assign to objects created by this user */ TOKEN_SOURCE source; /* source of the token */ int impersonation_level; /* impersonation level this token is capable of if non-primary token */ @@ -75,7 +75,7 @@ index 7ab0f634c05..6a1085bae12 100644 }; struct privilege -@@ -566,7 +567,7 @@ static struct token *create_token( unsigned primary, const SID *user, +@@ -545,7 +546,7 @@ static struct token *create_token( unsigned primary, const SID *user, const LUID_AND_ATTRIBUTES *privs, unsigned int priv_count, const ACL *default_dacl, TOKEN_SOURCE source, const luid_t *modified_id, @@ -84,7 +84,7 @@ index 7ab0f634c05..6a1085bae12 100644 { struct token *token = alloc_object( &token_ops ); if (token) -@@ -588,6 +589,7 @@ static struct token *create_token( unsigned primary, const SID *user, +@@ -567,6 +568,7 @@ static struct token *create_token( unsigned primary, const SID *user, token->impersonation_level = impersonation_level; token->default_dacl = NULL; token->primary_group = NULL; @@ -92,7 +92,7 @@ index 7ab0f634c05..6a1085bae12 100644 /* copy user */ token->user = memdup( user, security_sid_len( user )); -@@ -700,7 +702,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary, +@@ -682,7 +684,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary, token = create_token( primary, src_token->user, NULL, 0, NULL, 0, src_token->default_dacl, src_token->source, modified_id, @@ -102,16 +102,16 @@ index 7ab0f634c05..6a1085bae12 100644 if (!token) return token; /* copy groups */ -@@ -904,7 +907,7 @@ struct token *token_create_admin( void ) +@@ -888,7 +891,7 @@ struct token *token_create_admin( void ) static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}}; - token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]), - admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl, + token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ), + admin_privs, ARRAY_SIZE( admin_privs ), default_dacl, - admin_source, NULL, -1 ); + admin_source, NULL, -1, TokenElevationTypeFull ); /* we really need a primary group */ assert( token->primary_group ); } -@@ -1652,6 +1655,19 @@ DECL_HANDLER(get_token_statistics) +@@ -1627,6 +1630,19 @@ DECL_HANDLER(get_token_statistics) } } @@ -132,5 +132,5 @@ index 7ab0f634c05..6a1085bae12 100644 { struct token *token; -- -2.13.1 +2.19.1 diff --git a/patches/advapi32-Token_Integrity_Level/0004-server-Implement-token-integrity-level.patch b/patches/advapi32-Token_Integrity_Level/0004-server-Implement-token-integrity-level.patch index 611da476..1395f6b4 100644 --- a/patches/advapi32-Token_Integrity_Level/0004-server-Implement-token-integrity-level.patch +++ b/patches/advapi32-Token_Integrity_Level/0004-server-Implement-token-integrity-level.patch @@ -1,4 +1,4 @@ -From 971789f2af6149998e54382522569b3790309cf2 Mon Sep 17 00:00:00 2001 +From 7d07ac217db0b5226fed0b7233fdb21ef70b0cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 7 Aug 2017 02:28:35 +0200 Subject: [PATCH] server: Implement token integrity level. @@ -10,10 +10,10 @@ Subject: [PATCH] server: Implement token integrity level. 3 files changed, 48 insertions(+), 12 deletions(-) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c -index 9e60196..59c6e49 100644 +index b1dd999cf5..249b715da3 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c -@@ -340,7 +340,7 @@ NTSTATUS WINAPI NtQueryInformationToken( +@@ -400,7 +400,7 @@ NTSTATUS WINAPI NtQueryInformationToken( 0, /* TokenAccessInformation */ 0, /* TokenVirtualizationAllowed */ 0, /* TokenVirtualizationEnabled */ @@ -22,7 +22,7 @@ index 9e60196..59c6e49 100644 0, /* TokenUIAccess */ 0, /* TokenMandatoryPolicy */ 0, /* TokenLogonSid */ -@@ -593,18 +593,23 @@ NTSTATUS WINAPI NtQueryInformationToken( +@@ -653,18 +653,23 @@ NTSTATUS WINAPI NtQueryInformationToken( } break; case TokenIntegrityLevel: @@ -55,10 +55,10 @@ index 9e60196..59c6e49 100644 case TokenAppContainerSid: { diff --git a/server/protocol.def b/server/protocol.def -index c961eaf..0bb04cd 100644 +index 93afaabca1..685f69f4e2 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -3388,6 +3388,13 @@ enum caret_state +@@ -3405,6 +3405,13 @@ enum caret_state VARARG(sid,SID); /* the sid specified by which_sid from the token */ @END @@ -73,10 +73,10 @@ index c961eaf..0bb04cd 100644 obj_handle_t handle; /* handle to the token */ @REPLY diff --git a/server/token.c b/server/token.c -index 355a523..1ed994a 100644 +index e97c460ae0..fb40c1b551 100644 --- a/server/token.c +++ b/server/token.c -@@ -112,6 +112,7 @@ struct token +@@ -113,6 +113,7 @@ struct token TOKEN_SOURCE source; /* source of the token */ int impersonation_level; /* impersonation level this token is capable of if non-primary token */ TOKEN_ELEVATION_TYPE elevation; /* elevation level */ @@ -84,7 +84,7 @@ index 355a523..1ed994a 100644 }; struct privilege -@@ -544,7 +545,8 @@ static struct token *create_token( unsigned primary, const SID *user, +@@ -546,7 +547,8 @@ static struct token *create_token( unsigned primary, const SID *user, const LUID_AND_ATTRIBUTES *privs, unsigned int priv_count, const ACL *default_dacl, TOKEN_SOURCE source, const luid_t *modified_id, @@ -94,7 +94,7 @@ index 355a523..1ed994a 100644 { struct token *token = alloc_object( &token_ops ); if (token) -@@ -625,6 +627,7 @@ static struct token *create_token( unsigned primary, const SID *user, +@@ -630,6 +632,7 @@ static struct token *create_token( unsigned primary, const SID *user, } token->source = source; @@ -102,7 +102,7 @@ index 355a523..1ed994a 100644 } return token; } -@@ -680,7 +683,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary, +@@ -685,7 +688,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary, NULL, 0, src_token->default_dacl, src_token->source, modified_id, impersonation_level, @@ -112,16 +112,16 @@ index 355a523..1ed994a 100644 if (!token) return token; /* copy groups */ -@@ -884,7 +888,7 @@ struct token *token_create_admin( void ) +@@ -891,7 +895,7 @@ struct token *token_create_admin( void ) static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}}; - token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]), - admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl, + token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ), + admin_privs, ARRAY_SIZE( admin_privs ), default_dacl, - admin_source, NULL, -1, TokenElevationTypeFull ); + admin_source, NULL, -1, TokenElevationTypeFull, &high_label_sid ); /* we really need a primary group */ assert( token->primary_group ); } -@@ -1530,6 +1534,26 @@ DECL_HANDLER(get_token_sid) +@@ -1525,6 +1529,26 @@ DECL_HANDLER(get_token_sid) } } @@ -149,5 +149,5 @@ index 355a523..1ed994a 100644 DECL_HANDLER(get_token_groups) { -- -1.9.1 +2.19.1 diff --git a/patches/advapi32-Token_Integrity_Level/0010-server-Implement-support-for-creating-processes-usin.patch b/patches/advapi32-Token_Integrity_Level/0010-server-Implement-support-for-creating-processes-usin.patch index 6f1ded22..cc3a1732 100644 --- a/patches/advapi32-Token_Integrity_Level/0010-server-Implement-support-for-creating-processes-usin.patch +++ b/patches/advapi32-Token_Integrity_Level/0010-server-Implement-support-for-creating-processes-usin.patch @@ -198,7 +198,7 @@ index af2ba3d..57bf0ec 100644 } - if (!(process = create_process( socket_fd, parent, req->inherit_all, sd ))) goto done; -+ if (!(process = create_process( socket_fd, current, req->inherit_all, sd, token ))) goto done; ++ if (!(process = create_process( socket_fd, parent, req->inherit_all, sd, token ))) goto done; process->startup_info = (struct startup_info *)grab_object( info ); diff --git a/patches/browseui-Progress_Dialog/0002-browseui-Implement-PROGDLG_AUTOTIME-flag-for-IProgre.patch b/patches/browseui-Progress_Dialog/0002-browseui-Implement-PROGDLG_AUTOTIME-flag-for-IProgre.patch deleted file mode 100644 index 7b309b91..00000000 --- a/patches/browseui-Progress_Dialog/0002-browseui-Implement-PROGDLG_AUTOTIME-flag-for-IProgre.patch +++ /dev/null @@ -1,175 +0,0 @@ -From: Alistair Leslie-Hughes -Subject: [PATCH] browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog. -Message-Id: -Date: Wed, 10 Oct 2018 05:38:30 +0000 - -From: Michael Müller - -Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45970 -Signed-off-by: Alistair Leslie-Hughes ---- - dlls/browseui/browseui.rc | 5 +++ - dlls/browseui/progressdlg.c | 65 ++++++++++++++++++++++++++++++++++--- - dlls/browseui/resids.h | 5 +++ - 3 files changed, 70 insertions(+), 5 deletions(-) - -diff --git a/dlls/browseui/browseui.rc b/dlls/browseui/browseui.rc -index 4c612e93e3..6a152d7bcf 100644 ---- a/dlls/browseui/browseui.rc -+++ b/dlls/browseui/browseui.rc -@@ -25,6 +25,11 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT - STRINGTABLE - { - IDS_CANCELLING "Canceling..." -+ IDS_REMAINING1 "%u %s remaining" -+ IDS_REMAINING2 "%u %s and %u %s remaining" -+ IDS_SECONDS "seconds" -+ IDS_MINUTES "minutes" -+ IDS_HOURS "hours" - } - - IDD_PROGRESS_DLG DIALOG 0, 0, 260, 85 -diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c -index 2355b0cfa0..88c629099a 100644 ---- a/dlls/browseui/progressdlg.c -+++ b/dlls/browseui/progressdlg.c -@@ -74,6 +74,9 @@ typedef struct tagProgressDialog { - ULONGLONG ullCompleted; - ULONGLONG ullTotal; - HWND hwndDisabledParent; /* For modal dialog: the parent that need to be re-enabled when the dialog ends */ -+ ULONGLONG startTime; -+ LPWSTR remainingMsg[2]; -+ LPWSTR timeMsg[3]; - } ProgressDialog; - - static inline ProgressDialog *impl_from_IProgressDialog(IProgressDialog *iface) -@@ -158,6 +161,22 @@ static void update_dialog(ProgressDialog *This, DWORD dwUpdate) - } - } - -+static void load_time_strings(ProgressDialog *This) -+{ -+ int i; -+ -+ for (i = 0; i < 2; i++) -+ { -+ if (!This->remainingMsg[i]) -+ This->remainingMsg[i] = load_string(BROWSEUI_hinstance, IDS_REMAINING1 + i); -+ } -+ for (i = 0; i < 3; i++) -+ { -+ if (!This->timeMsg[i]) -+ This->timeMsg[i] = load_string(BROWSEUI_hinstance, IDS_SECONDS + i); -+ } -+} -+ - static void end_dialog(ProgressDialog *This) - { - SendMessageW(This->hwnd, WM_DLG_DESTROY, 0, 0); -@@ -260,14 +279,18 @@ static DWORD WINAPI dialog_thread(LPVOID lpParameter) - - static void ProgressDialog_Destructor(ProgressDialog *This) - { -+ int i; - TRACE("destroying %p\n", This); - if (This->hwnd) - end_dialog(This); -- heap_free(This->lines[0]); -- heap_free(This->lines[1]); -- heap_free(This->lines[2]); -+ for (i = 0; i < 3; i++) -+ heap_free(This->lines[i]); - heap_free(This->cancelMsg); - heap_free(This->title); -+ for (i = 0; i < 2; i++) -+ heap_free(This->remainingMsg[i]); -+ for (i = 0; i < 3; i++) -+ heap_free(This->timeMsg[i]); - This->cs.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&This->cs); - heap_free(This); -@@ -329,8 +352,6 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface, - TRACE("(%p, %p, %x, %p)\n", iface, punkEnableModeless, dwFlags, reserved); - if (punkEnableModeless || reserved) - FIXME("Reserved parameters not null (%p, %p)\n", punkEnableModeless, reserved); -- if (dwFlags & PROGDLG_AUTOTIME) -- FIXME("Flags PROGDLG_AUTOTIME not supported\n"); - if (dwFlags & PROGDLG_NOTIME) - FIXME("Flags PROGDLG_NOTIME not supported\n"); - -@@ -365,6 +386,10 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface, - This->hwndDisabledParent = hwndDisable; - } - -+ if (dwFlags & PROGDLG_AUTOTIME) -+ load_time_strings(This); -+ -+ This->startTime = GetTickCount64(); - LeaveCriticalSection(&This->cs); - - return S_OK; -@@ -422,6 +447,34 @@ static BOOL WINAPI ProgressDialog_HasUserCancelled(IProgressDialog *iface) - return This->isCancelled; - } - -+static void update_time_remaining(ProgressDialog *This, ULONGLONG ullCompleted, ULONGLONG ullTotal) -+{ -+ unsigned int remaining, remainder = 0; -+ ULONGLONG elapsed; -+ WCHAR line[128]; -+ int i; -+ -+ if (!This->startTime || !ullCompleted || !ullTotal) -+ return; -+ -+ elapsed = GetTickCount64() - This->startTime; -+ remaining = (elapsed * ullTotal / ullCompleted - elapsed) / 1000; -+ -+ for (i = 0; remaining >= 60 && i < 2; i++) -+ { -+ remainder = remaining % 60; -+ remaining /= 60; -+ } -+ -+ if (i > 0 && remaining < 2 && remainder != 0) -+ wsprintfW(line, This->remainingMsg[1], remaining, This->timeMsg[i], remainder, This->timeMsg[i-1]); -+ else -+ wsprintfW(line, This->remainingMsg[0], remaining, This->timeMsg[i]); -+ -+ set_buffer(&This->lines[2], line); -+ This->dwUpdate |= UPDATE_LINE3; -+} -+ - static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONGLONG ullCompleted, ULONGLONG ullTotal) - { - ProgressDialog *This = impl_from_IProgressDialog(iface); -@@ -434,6 +487,8 @@ static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONG - This->ullCompleted = ullCompleted; - This->dwUpdate |= UPDATE_PROGRESS; - hwnd = This->hwnd; -+ if (This->dwFlags & PROGDLG_AUTOTIME) -+ update_time_remaining(This, ullCompleted, ullTotal); - LeaveCriticalSection(&This->cs); - - if (hwnd) -diff --git a/dlls/browseui/resids.h b/dlls/browseui/resids.h -index cd44a8ebd9..865cdd1a5e 100644 ---- a/dlls/browseui/resids.h -+++ b/dlls/browseui/resids.h -@@ -21,6 +21,11 @@ - #include "commctrl.h" - - #define IDS_CANCELLING 16 -+#define IDS_REMAINING1 17 -+#define IDS_REMAINING2 18 -+#define IDS_SECONDS 19 -+#define IDS_MINUTES 20 -+#define IDS_HOURS 21 - - #define IDC_ANIMATION 100 - #define IDC_PROGRESS_BAR 102 - --- -2.19.1 - - diff --git a/patches/browseui-Progress_Dialog/definition b/patches/browseui-Progress_Dialog/definition deleted file mode 100644 index 7e746a75..00000000 --- a/patches/browseui-Progress_Dialog/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [45970] - browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index a62825ad..0098679c 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "e52a20f5bf86d156e1130e8268c65e04032e8caa" + echo "82dbf75dc064bb03b5dfc5d8a82b9782a7272ce2" } # Show version information @@ -96,7 +96,6 @@ patch_enable_all () enable_avifile_dll16_AVIStreamGetFrame="$1" enable_bcrypt_BCryptDeriveKeyPBKDF2="$1" enable_bcrypt_BCryptGenerateKeyPair="$1" - enable_browseui_Progress_Dialog="$1" enable_comctl32_Listview_DrawItem="$1" enable_comdlg32_lpstrFileTitle="$1" enable_configure_Absolute_RPATH="$1" @@ -454,9 +453,6 @@ patch_enable () bcrypt-BCryptGenerateKeyPair) enable_bcrypt_BCryptGenerateKeyPair="$2" ;; - browseui-Progress_Dialog) - enable_browseui_Progress_Dialog="$2" - ;; comctl32-Listview_DrawItem) enable_comctl32_Listview_DrawItem="$2" ;; @@ -2575,21 +2571,6 @@ if test "$enable_bcrypt_BCryptGenerateKeyPair" -eq 1; then ) >> "$patchlist" fi -# Patchset browseui-Progress_Dialog -# | -# | This patchset fixes the following Wine bugs: -# | * [#45970] - browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog -# | -# | Modified files: -# | * dlls/browseui/browseui.rc, dlls/browseui/progressdlg.c, dlls/browseui/resids.h -# | -if test "$enable_browseui_Progress_Dialog" -eq 1; then - patch_apply browseui-Progress_Dialog/0002-browseui-Implement-PROGDLG_AUTOTIME-flag-for-IProgre.patch - ( - printf '%s\n' '+ { "Michael Müller", "browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog.", 1 },'; - ) >> "$patchlist" -fi - # Patchset comctl32-Listview_DrawItem # | # | This patchset fixes the following Wine bugs: diff --git a/patches/server-send_hardware_message/0001-server-Improve-handling-of-hooks-for-normal-non-inje.patch b/patches/server-send_hardware_message/0001-server-Improve-handling-of-hooks-for-normal-non-inje.patch index 583e6756..2d0603f9 100644 --- a/patches/server-send_hardware_message/0001-server-Improve-handling-of-hooks-for-normal-non-inje.patch +++ b/patches/server-send_hardware_message/0001-server-Improve-handling-of-hooks-for-normal-non-inje.patch @@ -1,18 +1,18 @@ -From 02879d85a14dd6fff5c473cf38f92dab1305f573 Mon Sep 17 00:00:00 2001 +From 2818967ffcc15779d8e0398eaf2f834f05fa21bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Tue, 27 Jun 2017 02:08:50 +0200 -Subject: server: Improve handling of hooks for normal (non-injected) hardware - messages. +Subject: [PATCH] server: Improve handling of hooks for normal (non-injected) + hardware messages. --- server/queue.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/server/queue.c b/server/queue.c -index 941fcb6a307..ee8e5255848 100644 +index 919e0cc350..16832c7aa4 100644 --- a/server/queue.c +++ b/server/queue.c -@@ -1715,7 +1715,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons +@@ -1716,7 +1716,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons struct hardware_msg_data *msg_data; struct message *msg; unsigned int i, time, flags; @@ -21,9 +21,9 @@ index 941fcb6a307..ee8e5255848 100644 static const unsigned int messages[] = { -@@ -1821,13 +1821,13 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons +@@ -1822,13 +1822,13 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons /* specify a sender only when sending the last message */ - if (!(flags & ((1 << sizeof(messages)/sizeof(messages[0])) - 1))) + if (!(flags & ((1 << ARRAY_SIZE( messages )) - 1))) { - if (!(wait = send_hook_ll_message( desktop, msg, input, sender ))) + if (!(hooked = send_hook_ll_message( desktop, msg, input, sender ))) @@ -37,7 +37,7 @@ index 941fcb6a307..ee8e5255848 100644 } /* queue a hardware message for a keyboard event */ -@@ -1839,7 +1839,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c +@@ -1840,7 +1840,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c struct message *msg; unsigned char vkey = input->kbd.vkey; unsigned int message_code, time; @@ -46,7 +46,7 @@ index 941fcb6a307..ee8e5255848 100644 if (!(time = input->kbd.time)) time = get_tick_count(); -@@ -1972,10 +1972,10 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c +@@ -1973,10 +1973,10 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c msg_data->flags |= (flags & (KF_EXTENDED | KF_ALTDOWN | KF_UP)) >> 8; } @@ -59,7 +59,7 @@ index 941fcb6a307..ee8e5255848 100644 } /* queue a hardware message for a custom type of event */ -@@ -2493,7 +2493,7 @@ DECL_HANDLER(send_hardware_message) +@@ -2494,7 +2494,7 @@ DECL_HANDLER(send_hardware_message) { struct thread *thread = NULL; struct desktop *desktop; @@ -69,5 +69,5 @@ index 941fcb6a307..ee8e5255848 100644 if (!(desktop = get_thread_desktop( current, 0 ))) return; -- -2.13.1 +2.19.1 diff --git a/patches/winemenubuilder-Desktop_Icon_Path/0001-winemenubuilder-Create-desktop-shortcuts-with-absolu.patch b/patches/winemenubuilder-Desktop_Icon_Path/0001-winemenubuilder-Create-desktop-shortcuts-with-absolu.patch index 99ee6a22..af86833b 100644 --- a/patches/winemenubuilder-Desktop_Icon_Path/0001-winemenubuilder-Create-desktop-shortcuts-with-absolu.patch +++ b/patches/winemenubuilder-Desktop_Icon_Path/0001-winemenubuilder-Create-desktop-shortcuts-with-absolu.patch @@ -1,4 +1,4 @@ -From 9d905c79b5b646eb46058f76cc1983b3adedc49b Mon Sep 17 00:00:00 2001 +From 65db555c42f4f114cba9f22fbec969f971e853ef Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Wed, 24 Sep 2014 21:13:59 +0200 Subject: [PATCH] winemenubuilder: Create desktop shortcuts with absolute wine @@ -15,7 +15,7 @@ wine, and so on ...). 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/programs/winemenubuilder/Makefile.in b/programs/winemenubuilder/Makefile.in -index 07e2702..a4e28ad 100644 +index 07e2702843..a4e28adc4b 100644 --- a/programs/winemenubuilder/Makefile.in +++ b/programs/winemenubuilder/Makefile.in @@ -1,6 +1,7 @@ @@ -27,7 +27,7 @@ index 07e2702..a4e28ad 100644 C_SRCS = \ winemenubuilder.c diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c -index dd69ff9..239502f 100644 +index 26710e9e92..c0834e54af 100644 --- a/programs/winemenubuilder/winemenubuilder.c +++ b/programs/winemenubuilder/winemenubuilder.c @@ -107,6 +107,14 @@ WINE_DEFAULT_DEBUG_CHANNEL(menubuilder); @@ -55,7 +55,7 @@ index dd69ff9..239502f 100644 + wine_get_config_dir(), wine_path, path, args); fprintf(file, "Type=Application\n"); fprintf(file, "StartupNotify=true\n"); - if (descr && lstrlenA(descr)) + if (descr && *descr) @@ -2505,7 +2513,8 @@ static BOOL write_freedesktop_association_entry(const char *desktopPath, const c fprintf(desktop, "Type=Application\n"); fprintf(desktop, "Name=%s\n", friendlyAppName); @@ -67,5 +67,5 @@ index dd69ff9..239502f 100644 fprintf(desktop, "StartupNotify=true\n"); if (openWithIcon) -- -1.9.1 +2.19.1