Skip to content

Commit

Permalink
Update to 8-24
Browse files Browse the repository at this point in the history
  • Loading branch information
rankynbass committed Nov 21, 2023
2 parents c06b8b5 + ba2339d commit 87250d7
Show file tree
Hide file tree
Showing 6 changed files with 215 additions and 32 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Lutris Wine GE-Proton8-22
Lutris Wine GE-Proton8-24
28 changes: 0 additions & 28 deletions patches/game-patches/farlight84.patch

This file was deleted.

9 changes: 7 additions & 2 deletions patches/protonprep-lutris-staging.sh
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,9 @@
patch -Np1 < ../patches/game-patches/ffxiv_hydaelyn_intro_playback_fix.patch

# https://github.com/ValveSoftware/Proton/issues/6717
echo "WINE: -GAME FIXES- Fix Farlight 84 dxva crash"
patch -Np1 < ../patches/game-patches/farlight84.patch
# https://gitlab.winehq.org/wine/wine/-/merge_requests/4428
echo "WINE: -GAME FIXES- Fix Farlight 84 crash"
patch -Np1 < ../patches/wine-hotfixes/pending/4428.patch

### END GAME PATCH SECTION ###

Expand All @@ -348,6 +349,10 @@
echo "WINE: -PENDING- Guild Wars 2 patch"
patch -Np1 < ../patches/wine-hotfixes/pending/hotfix-guild_wars_2.patch

# https://github.com/ValveSoftware/wine/pull/205
echo "WINE: -PENDING- Add WINE_DISABLE_SFN option."
patch -Np1 < ../patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch

### END WINE PENDING UPSTREAM SECTION ###


Expand Down
135 changes: 135 additions & 0 deletions patches/wine-hotfixes/pending/4428.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
From ed32c881e266b116e394f0343fc976ab0b6d2962 Mon Sep 17 00:00:00 2001
From: Etaash Mathamsetty <[email protected]>
Date: Fri, 17 Nov 2023 17:48:10 -0500
Subject: [PATCH] cfgmgr32: Add CM_Register_Notification stub.

---
dlls/cfgmgr32/cfgmgr32.spec | 1 +
dlls/cfgmgr32/main.c | 8 +++++
include/cfgmgr32.h | 72 +++++++++++++++++++++++++++++++++++++
3 files changed, 81 insertions(+)

diff --git a/dlls/cfgmgr32/cfgmgr32.spec b/dlls/cfgmgr32/cfgmgr32.spec
index 5c9b8f613db..e4cd845e2a4 100644
--- a/dlls/cfgmgr32/cfgmgr32.spec
+++ b/dlls/cfgmgr32/cfgmgr32.spec
@@ -154,6 +154,7 @@
@ stub CM_Register_Device_InterfaceW
@ stub CM_Register_Device_Interface_ExA
@ stub CM_Register_Device_Interface_ExW
+@ stdcall CM_Register_Notification(ptr ptr ptr ptr)
@ stub CM_Remove_SubTree
@ stub CM_Remove_SubTree_Ex
@ stub CM_Remove_Unmarked_Children
diff --git a/dlls/cfgmgr32/main.c b/dlls/cfgmgr32/main.c
index fee3c42a5c4..d15354367f8 100644
--- a/dlls/cfgmgr32/main.c
+++ b/dlls/cfgmgr32/main.c
@@ -21,6 +21,14 @@

WINE_DEFAULT_DEBUG_CHANNEL(setupapi);

+CONFIGRET WINAPI CM_Register_Notification( CM_NOTIFY_FILTER *filter, void *context,
+ PCM_NOTIFY_CALLBACK callback, HCMNOTIFICATION *notify_context )
+{
+ FIXME("%p %p %p %p stub!\n", filter, context, callback, notify_context);
+
+ return CR_CALL_NOT_IMPLEMENTED;
+}
+
/***********************************************************************
* CM_MapCrToWin32Err (cfgmgr32.@)
*/
diff --git a/include/cfgmgr32.h b/include/cfgmgr32.h
index 04f1f80b174..e07ca4edd6f 100644
--- a/include/cfgmgr32.h
+++ b/include/cfgmgr32.h
@@ -187,6 +187,7 @@ typedef DWORD CONFIGRET;
typedef DWORD DEVINST, *PDEVINST;
typedef DWORD DEVNODE, *PDEVNODE;
typedef HANDLE HMACHINE, *PHMACHINE;
+typedef HANDLE HCMNOTIFICATION, *PHCMNOTIFICATION;
typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
typedef ULONG REGDISPOSITION;
@@ -208,6 +209,77 @@ typedef enum _PNP_VETO_TYPE
PNP_VetoInsufficientRights
} PNP_VETO_TYPE, *PPNP_VETO_TYPE;

+typedef enum _CM_NOTIFY_FILTER_TYPE
+{
+ CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0,
+ CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE,
+ CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE,
+ CM_NOTIFY_FILTER_TYPE_MAX
+} CM_NOTIFY_FILTER_TYPE, *PCM_NOTIFY_FILTER_TYPE;
+
+typedef enum _CM_NOTIFY_ACTION
+{
+ CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
+ CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
+ CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
+ CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
+ CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
+ CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
+ CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
+ CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
+ CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
+ CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
+ CM_NOTIFY_ACTION_MAX
+} CM_NOTIFY_ACTION, *PCM_NOTIFY_ACTION;
+
+typedef struct _CM_NOTIFY_FILTER
+{
+ DWORD cbSize;
+ DWORD Flags;
+ CM_NOTIFY_FILTER_TYPE FilterType;
+ DWORD Reserved;
+ union {
+ struct {
+ GUID ClassGuid;
+ } DeviceInterface;
+ struct {
+ HANDLE hTarget;
+ } DeviceHandle;
+ struct {
+ WCHAR InstanceId[MAX_DEVICE_ID_LEN];
+ } DeviceInstance;
+ } u;
+} CM_NOTIFY_FILTER, *PCM_NOTIFY_FILTER;
+
+typedef struct _CM_NOTIFY_EVENT_DATA
+{
+ CM_NOTIFY_FILTER_TYPE FilterType;
+ DWORD Reserved;
+ union {
+ struct {
+ GUID ClassGuid;
+ WCHAR SymbolicLink[ANYSIZE_ARRAY];
+ } DeviceInterface;
+ struct {
+ GUID EventGuid;
+ LONG NameOffset;
+ DWORD DataSize;
+ BYTE Data[ANYSIZE_ARRAY];
+ } DeviceHandle;
+ struct {
+ WCHAR InstanceId[ANYSIZE_ARRAY];
+ } DeviceInstance;
+ } u;
+} CM_NOTIFY_EVENT_DATA, *PCM_NOTIFY_EVENT_DATA;
+
+typedef DWORD (WINAPI *PCM_NOTIFY_CALLBACK)(
+ HCMNOTIFICATION Notify,
+ void *Context,
+ CM_NOTIFY_ACTION Action,
+ CM_NOTIFY_EVENT_DATA *EventData,
+ DWORD EventDataSize
+);
+
DECL_WINELIB_CFGMGR32_TYPE_AW(DEVNODEID)
DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID)

--
GitLab

71 changes: 71 additions & 0 deletions patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index 870c5e39271..3162d36a803 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -1511,16 +1511,20 @@ static BOOL append_entry( struct dir_data *data, const char *long_name,
if (long_len == ARRAY_SIZE(long_nameW)) return TRUE;
long_nameW[long_len] = 0;

- if (short_name)
- {
- short_len = ntdll_umbstowcs( short_name, strlen(short_name),
- short_nameW, ARRAY_SIZE( short_nameW ) - 1 );
- }
- else /* generate a short name if necessary */
+ short_len = 0;
+
+ if (!disable_sfn)
{
- short_len = 0;
- if (!is_legal_8dot3_name( long_nameW, long_len ))
- short_len = hash_short_file_name( long_nameW, long_len, short_nameW );
+ if (short_name)
+ {
+ short_len = ntdll_umbstowcs( short_name, strlen(short_name),
+ short_nameW, ARRAY_SIZE( short_nameW ) - 1 );
+ }
+ else /* generate a short name if necessary */
+ {
+ if (!is_legal_8dot3_name( long_nameW, long_len ))
+ short_len = hash_short_file_name( long_nameW, long_len, short_nameW );
+ }
}
short_nameW[short_len] = 0;
wcsupr( short_nameW );
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 5f7f114b286..cbea0dc5d2d 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -2152,6 +2152,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
debugstr_pc,
};

+BOOL disable_sfn;
BOOL ac_odyssey;
BOOL fsync_simulate_sched_quantum;
BOOL alert_simulate_sched_quantum;
@@ -2175,6 +2176,12 @@ static void hacks_init(void)
ERR( "HACK: ram_reporting_bias %lldMB.\n", ram_reporting_bias / (1024 * 1024) );
}

+ env_str = getenv("WINE_DISABLE_SFN");
+ if (env_str)
+ disable_sfn = !!atoi(env_str);
+ else if (main_argc > 1 && (strstr(main_argv[1], "Yakuza5.exe") ))
+ disable_sfn = TRUE;
+
env_str = getenv("WINE_SIMULATE_ASYNC_READ");
if (env_str)
ac_odyssey = !!atoi(env_str);
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index cae15947bbd..6403dad858d 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -152,6 +152,7 @@ extern BOOL is_wow64 DECLSPEC_HIDDEN;
extern struct ldt_copy __wine_ldt_copy DECLSPEC_HIDDEN;
#endif

+extern BOOL disable_sfn DECLSPEC_HIDDEN;
extern BOOL ac_odyssey DECLSPEC_HIDDEN;
extern BOOL fsync_simulate_sched_quantum DECLSPEC_HIDDEN;
extern BOOL alert_simulate_sched_quantum DECLSPEC_HIDDEN;
2 changes: 1 addition & 1 deletion proton-wine

0 comments on commit 87250d7

Please sign in to comment.