Compare commits

..

13 Commits
v6.20 ... v6.21

Author SHA1 Message Date
Alistair Leslie-Hughes
63c3baa9e5 Release v6.21 2021-11-06 16:46:38 +11:00
Alistair Leslie-Hughes
980a476c49 Rebase against 20f1a677b664b3d0d3dc038ffb9ab4f4e4aa6274. 2021-11-06 16:17:10 +11:00
Alistair Leslie-Hughes
120e2d362f Added configure-dwarf4 patchset
This patchset is to allow general testing before it's being submitted upstream.
2021-11-05 07:57:56 +11:00
Alistair Leslie-Hughes
df26057ddf Added shell32-registry-lookup-app patchset 2021-11-04 21:06:02 +11:00
Alistair Leslie-Hughes
fa3a80f5af Re-enable ntdll-ForceBottomUpAlloc 2021-11-04 20:56:04 +11:00
Alistair Leslie-Hughes
00ab8180c0 Rebase against 46367d1ecc8a016ab7c7af9ec107e33c6d46fc26. 2021-11-04 15:04:50 +11:00
Alistair Leslie-Hughes
fe634350d2 Rebase against 0b79e2caa6f224fc0da672886c07f4f32dda4682. 2021-11-02 12:07:45 +11:00
Alistair Leslie-Hughes
b10ac7d8ac Rebase against 5f93c683ab0163cb34482fe18549cf249b8b074b. 2021-10-30 18:14:25 +11:00
Alistair Leslie-Hughes
56fd61a713 Updated user32-rawinput-mouse-experimental patchset 2021-10-29 21:37:16 +11:00
Alistair Leslie-Hughes
c9c7130f3c Updated user32-rawinput-mouse patchset 2021-10-28 19:37:27 +11:00
Zebediah Figura
5f113860f5 Rebase against 80a30625a70343cf6f38d80d02f640d684e27e6d. 2021-10-27 17:05:11 -05:00
Zebediah Figura
9a5667dba1 Rebase against e73bb07ff59d0d0b7925df3d642299689275b0a8. 2021-10-26 21:50:30 -05:00
Zebediah Figura
1295604add Rebase against ababea0fd7036ab13ec17d31afbd584c39f62696. 2021-10-26 00:04:29 -05:00
48 changed files with 815 additions and 3568 deletions

View File

@@ -1,4 +1,4 @@
From 7784b62bd2b64aabd6bfef9ef39ac4f3e8c55c77 Mon Sep 17 00:00:00 2001
From eb21fcc668da85977bc86b6105f3830cb26c93e6 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 8 Jun 2021 08:56:40 +1000
Subject: [PATCH] bcrypt: Stop compile error when HAVE_GNUTLS_CIPHER_INIT not
@@ -20,21 +20,21 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/bcrypt/gnutls.c b/dlls/bcrypt/gnutls.c
index 37a80bdc062..64825f5b99b 100644
index d7b4499c692..11596d5f7ac 100644
--- a/dlls/bcrypt/gnutls.c
+++ b/dlls/bcrypt/gnutls.c
@@ -25,9 +25,10 @@
@@ -24,9 +24,10 @@
#include "config.h"
#include "wine/port.h"
+#include <stdarg.h>
+
#ifdef HAVE_GNUTLS_CIPHER_INIT
-#include <stdarg.h>
#include <stdlib.h>
#include <assert.h>
#include <gnutls/gnutls.h>
#include <gnutls/crypto.h>
#include <sys/types.h>
--
2.30.2
2.33.0

View File

@@ -1,4 +1,4 @@
From 916189d1cdf149f16867870121171e20f129da9f Mon Sep 17 00:00:00 2001
From 36b4dbb687232d783cc3203da1dee4a797606ba7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
@@ -9,7 +9,7 @@ Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
1 file changed, 15 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 3339596944a..1d435f88755 100644
index 255d5afef79..00add6728cc 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -44,6 +44,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -20,7 +20,7 @@ index 3339596944a..1d435f88755 100644
#ifdef _WIN64
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
@@ -3373,6 +3374,7 @@ void WINAPI LdrShutdownProcess(void)
@@ -3536,6 +3537,7 @@ void WINAPI LdrShutdownProcess(void)
process_detach();
}
@@ -28,7 +28,7 @@ index 3339596944a..1d435f88755 100644
/******************************************************************
* RtlExitUserProcess (NTDLL.@)
@@ -3783,6 +3785,9 @@ static void init_wow64( CONTEXT *context )
@@ -3955,6 +3957,9 @@ static void release_address_space(void)
*/
void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR unknown3, ULONG_PTR unknown4 )
{
@@ -36,9 +36,9 @@ index 3339596944a..1d435f88755 100644
+ UNICODE_STRING staging_event_string;
+ HANDLE staging_event;
static int attach_done;
int i;
NTSTATUS status;
@@ -3869,6 +3874,16 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
ULONG_PTR cookie;
@@ -4041,6 +4046,16 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
if (NtCurrentTeb()->WowTebOffset) init_wow64( context );
#endif
@@ -56,5 +56,5 @@ index 3339596944a..1d435f88755 100644
InsertHeadList( &tls_links, &NtCurrentTeb()->TlsLinks );
RtlReleasePebLock();
--
2.30.2
2.33.0

View File

@@ -1,125 +0,0 @@
From ffea83bdf88a4b7d35c2f9a7e1a773d3110b5771 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 12 Apr 2016 01:02:34 +0200
Subject: [PATCH] uiautomationcore: Add dll and stub some functions.
---
dlls/uiautomationcore/Makefile.in | 1 +
dlls/uiautomationcore/uia_main.c | 53 +++++++++++++++++++++++++++----
2 files changed, 48 insertions(+), 6 deletions(-)
diff --git a/dlls/uiautomationcore/Makefile.in b/dlls/uiautomationcore/Makefile.in
index 71ea7b99c94..3e6c2d7688a 100644
--- a/dlls/uiautomationcore/Makefile.in
+++ b/dlls/uiautomationcore/Makefile.in
@@ -1,5 +1,6 @@
MODULE = uiautomationcore.dll
IMPORTLIB = uiautomationcore
+IMPORTS = uuid
EXTRADLLFLAGS = -Wb,--prefer-native
diff --git a/dlls/uiautomationcore/uia_main.c b/dlls/uiautomationcore/uia_main.c
index 2dada95af80..a32ef552f15 100644
--- a/dlls/uiautomationcore/uia_main.c
+++ b/dlls/uiautomationcore/uia_main.c
@@ -1,4 +1,5 @@
/*
+ * Copyright 2016 Michael MĂĽller
* Copyright 2017 Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
@@ -16,18 +17,58 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#define COBJMACROS
#include "uiautomation.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(uiautomation);
+static HRESULT WINAPI dummy_QueryInterface(IUnknown *iface, REFIID iid, void **ppv)
+{
+ TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), ppv);
+
+ if (!ppv) return E_INVALIDARG;
+
+ if (!IsEqualIID(&IID_IUnknown, iid))
+ {
+ FIXME("Unknown interface: %s\n", debugstr_guid(iid));
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+
+ *ppv = iface;
+ IUnknown_AddRef((IUnknown *)*ppv);
+ return S_OK;
+}
+
+static ULONG WINAPI dummy_AddRef(IUnknown *iface)
+{
+ FIXME("(%p): stub\n", iface);
+ return 1;
+}
+
+static ULONG WINAPI dummy_Release(IUnknown *iface)
+{
+ FIXME("(%p): stub\n", iface);
+ return 1;
+}
+
+static const IUnknownVtbl dummy_Vtbl =
+{
+ dummy_QueryInterface,
+ dummy_AddRef,
+ dummy_Release,
+};
+
+static IUnknown dummy = { &dummy_Vtbl };
+
/***********************************************************************
* UiaClientsAreListening (uiautomationcore.@)
*/
BOOL WINAPI UiaClientsAreListening(void)
{
- FIXME("()\n");
+ FIXME("(): stub\n");
return FALSE;
}
@@ -36,8 +77,8 @@ BOOL WINAPI UiaClientsAreListening(void)
*/
HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value)
{
- FIXME("(%p) stub!\n", value);
- *value = NULL;
+ FIXME("(%p): stub!\n", value);
+ *value = &dummy;
return S_OK;
}
@@ -46,8 +87,8 @@ HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value)
*/
HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value)
{
- FIXME("(%p) stub!\n", value);
- *value = NULL;
+ FIXME("(%p): stub!\n", value);
+ *value = &dummy;
return S_OK;
}
@@ -66,7 +107,7 @@ int WINAPI UiaLookupId(enum AutomationIdentifierType type, const GUID *guid)
LRESULT WINAPI UiaReturnRawElementProvider(HWND hwnd, WPARAM wParam,
LPARAM lParam, IRawElementProviderSimple *elprov)
{
- FIXME("(%p, %lx, %lx, %p) stub!\n", hwnd, wParam, lParam, elprov);
+ FIXME("(%p, %lx, %lx, %p): stub!\n", hwnd, wParam, lParam, elprov);
return 0;
}
--
2.33.0

View File

@@ -0,0 +1,36 @@
From 5d62ab1fd576aa9e11a387a6b2a1b250aecc1803 Mon Sep 17 00:00:00 2001
From: Eric Pouech <eric.pouech@gmail.com>
Date: Fri, 5 Nov 2021 07:56:04 +1100
Subject: [PATCH] configure.ac: let dwarf4 be Wine's default debug format
---
configure.ac | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index 57bd9a6f9ec..0196af56783 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1051,8 +1051,7 @@ then
if test "x$ac_debug_format_seen" = x
then
case $CROSSDEBUG in
- *dwarf) WINE_TRY_CROSSCFLAGS([-gdwarf-2])
- WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+ *dwarf) WINE_TRY_CROSSCFLAGS([-gdwarf-4]) ;;
pdb) WINE_TRY_CROSSCFLAGS([-gcodeview]) ;;
esac
fi
@@ -1865,8 +1864,7 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy=
done
if test "x$ac_debug_format_seen" = xdefault
then
- WINE_TRY_CFLAGS([-gdwarf-2])
- WINE_TRY_CFLAGS([-gstrict-dwarf])
+ WINE_TRY_CFLAGS([-gdwarf-4])
fi
dnl Disable gcc builtins except for Mingw
--
2.33.0

View File

@@ -7,104 +7,10 @@ We use ppoll() instead of poll() for the better time granularity.
Although perhaps we shouldn't since the server doesn't do this.
---
configure | 68 +++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 12 ++++++++
include/config.h.in | 9 ++++++
3 files changed, 89 insertions(+)
diff --git a/configure b/configure
index ec425d91f63..200b42b7fe7 100755
--- a/configure
+++ b/configure
@@ -7525,6 +7525,7 @@ for ac_header in \
sys/cdio.h \
sys/epoll.h \
sys/event.h \
+ sys/eventfd.h \
sys/filio.h \
sys/ioctl.h \
sys/ipc.h \
@@ -17912,6 +17913,7 @@ for ac_func in \
port_create \
posix_fadvise \
posix_fallocate \
+ ppoll \
prctl \
proc_pidinfo \
setproctitle \
@@ -18255,6 +18257,72 @@ fi
;;
esac
+if test "$ac_cv_header_sys_mman_h" = "yes" -a "x$RT_LIBS" = "x"
+then
+ ac_save_LIBS=$LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing shm_open" >&5
+$as_echo_n "checking for library containing shm_open... " >&6; }
+if ${ac_cv_search_shm_open+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shm_open ();
+int
+main ()
+{
+return shm_open ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_shm_open=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_shm_open+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_shm_open+:} false; then :
+
+else
+ ac_cv_search_shm_open=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_shm_open" >&5
+$as_echo "$ac_cv_search_shm_open" >&6; }
+ac_res=$ac_cv_search_shm_open
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_SHM_OPEN 1" >>confdefs.h
+
+ test "$ac_res" = "none required" || RT_LIBS="$ac_res"
+
+fi
+
+fi
+LIBS=$ac_save_LIBS
+
if test "x$with_ldap" != "xno"
then
if ${LDAP_CFLAGS:+false} :; then :
diff --git a/configure.ac b/configure.ac
index 718ab1ca50e..d5f82ad2af4 100644
--- a/configure.ac

View File

@@ -1,27 +1,34 @@
From f260254e168fbaad0321273037762e218eb6b7a6 Mon Sep 17 00:00:00 2001
From 153efcdc01d57fc29c6d1e80eda52f43666b34a6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 14:57:42 -0500
Subject: [PATCH] ntdll: Implement waiting on manual-reset events.
---
dlls/ntdll/unix/esync.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
dlls/ntdll/unix/esync.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index 97d468b2449..4f993689e0d 100644
index 97d468b2449..d58cb6c1ee2 100644
--- a/dlls/ntdll/unix/esync.c
+++ b/dlls/ntdll/unix/esync.c
@@ -483,12 +483,24 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -38,9 +38,7 @@
#ifdef HAVE_SYS_MMAN_H
# include <sys/mman.h>
#endif
-#ifdef HAVE_SYS_POLL_H
-# include <sys/poll.h>
-#endif
+#include <poll.h>
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
@@ -483,12 +481,24 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
int64_t value;
ssize_t size;
- if ((size = read( fds[i].fd, &value, sizeof(value) )) == sizeof(value))
+ if (obj->type == ESYNC_MANUAL_EVENT)
{
- /* We found our object. */
- TRACE("Woken up by handle %p [%d].\n", handles[i], i);
- update_grabbed_object( obj );
- return i;
+ {
+ /* Don't grab the object, just check if it's signaled. */
+ if (fds[i].revents & POLLIN)
+ {
@@ -30,7 +37,11 @@ index 97d468b2449..4f993689e0d 100644
+ }
+ }
+ else
+ {
{
- /* We found our object. */
- TRACE("Woken up by handle %p [%d].\n", handles[i], i);
- update_grabbed_object( obj );
- return i;
+ if ((size = read( fds[i].fd, &value, sizeof(value) )) == sizeof(value))
+ {
+ /* We found our object. */
@@ -42,5 +53,5 @@ index 97d468b2449..4f993689e0d 100644
}
}
--
2.28.0
2.33.0

View File

@@ -1,3 +1,2 @@
Fixes: [48175] AION (64 bit) - crashes in crysystem.dll.CryFree() due to high memory pointers allocated
Fixes: [46568] 64-bit msxml6.dll from Microsoft Core XML Services 6.0 redist package fails to load (Wine doesn't respect 44-bit user-mode VA limitation from Windows < 8.1)

View File

@@ -1,12 +1,12 @@
From 187108be05dcf7521646c22f637627147d9bbdb3 Mon Sep 17 00:00:00 2001
From f44bf16013c0dace490308af9ce17b3ff6082abf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 3 Apr 2017 05:30:27 +0200
Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
---
dlls/kernel32/tests/loader.c | 75 ++++++++++++++++++++++++++++++++++++
dlls/ntdll/loader.c | 41 ++++++++++++++++++++
2 files changed, 116 insertions(+)
dlls/ntdll/loader.c | 42 ++++++++++++++++++++
2 files changed, 117 insertions(+)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index 4f1b11338a6..56cd5a88e20 100644
@@ -109,7 +109,7 @@ index 4f1b11338a6..56cd5a88e20 100644
test_dll_file( "kernel32.dll" );
test_dll_file( "advapi32.dll" );
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 65d684e555c..644d531d8f8 100644
index 6dcf73295b0..8b9305ff5b6 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -129,6 +129,9 @@ struct file_id
@@ -122,7 +122,7 @@ index 65d684e555c..644d531d8f8 100644
/* internal representation of loaded modules */
typedef struct _wine_modref
{
@@ -477,6 +480,33 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module )
@@ -476,6 +479,33 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module )
}
}
@@ -156,7 +156,7 @@ index 65d684e555c..644d531d8f8 100644
/*************************************************************************
* get_modref
*
@@ -1253,7 +1283,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name
@@ -1352,7 +1382,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name
&wm->ldr.InLoadOrderLinks);
InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList,
&wm->ldr.InMemoryOrderLinks);
@@ -169,7 +169,7 @@ index 65d684e555c..644d531d8f8 100644
if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT))
{
@@ -1933,6 +1968,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
@@ -2032,6 +2067,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
/* the module has only be inserted in the load & memory order lists */
RemoveEntryList(&wm->ldr.InLoadOrderLinks);
RemoveEntryList(&wm->ldr.InMemoryOrderLinks);
@@ -177,15 +177,23 @@ index 65d684e555c..644d531d8f8 100644
/* FIXME: there are several more dangling references
* left. Including dlls loaded by this dll before the
@@ -3518,6 +3554,7 @@ static void free_modref( WINE_MODREF *wm )
{
@@ -3621,6 +3657,7 @@ static void free_modref( WINE_MODREF *wm )
RemoveEntryList(&wm->ldr.InLoadOrderLinks);
RemoveEntryList(&wm->ldr.InMemoryOrderLinks);
+ RemoveEntryList(&wm->ldr.HashLinks);
if (wm->ldr.InInitializationOrderLinks.Flink)
RemoveEntryList(&wm->ldr.InInitializationOrderLinks);
@@ -3881,6 +3918,10 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
@@ -3983,6 +4020,7 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
if (!imports_fixup_done)
{
+ int i;
ANSI_STRING func_name;
WINE_MODREF *kernel32;
PEB *peb = NtCurrentTeb()->Peb;
@@ -4000,6 +4038,10 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
sizeof(peb->TlsExpansionBitmapBits) * 8 );
RtlSetBits( peb->TlsBitmap, 0, 1 ); /* TLS index 0 is reserved and should be initialized to NULL. */

View File

@@ -1,4 +1,4 @@
From b8a8aafd5c57dba6be726cf5974dfce006ea8d06 Mon Sep 17 00:00:00 2001
From 2900e5cd5220e8a41e7c5a5971f7a32e72f508f5 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 30 May 2015 02:23:15 +0200
Subject: [PATCH] ntdll: Add support for hiding wine version information from
@@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Add support for hiding wine version information from
2 files changed, 103 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 336b11c6344..46f74df7130 100644
index 23d44aae64c..77dd56c88f1 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -74,6 +74,9 @@ BOOL is_wow64 = FALSE;
@@ -89,6 +89,9 @@ HMODULE kernel32_handle = 0;
/* system search path */
static const WCHAR system_path[] = L"C:\\windows\\system32;C:\\windows\\system;C:\\windows";
@@ -23,7 +23,7 @@ index 336b11c6344..46f74df7130 100644
static BOOL is_prefix_bootstrap; /* are we bootstrapping the prefix? */
static BOOL imports_fixup_done = FALSE; /* set once the imports have been fixed up, before attaching them */
static BOOL process_detaching = FALSE; /* set on process detach to avoid deadlocks with thread detach */
@@ -92,6 +95,8 @@ struct dll_dir_entry
@@ -107,6 +110,8 @@ struct dll_dir_entry
static struct list dll_dir_list = LIST_INIT( dll_dir_list ); /* extra dirs from LdrAddDllDirectory */
@@ -32,7 +32,7 @@ index 336b11c6344..46f74df7130 100644
struct ldr_notification
{
struct list entry;
@@ -1673,6 +1678,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic )
@@ -1862,6 +1867,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic )
}
@@ -129,7 +129,7 @@ index 336b11c6344..46f74df7130 100644
/******************************************************************
* LdrGetProcedureAddress (NTDLL.@)
*/
@@ -1692,7 +1787,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name,
@@ -1881,7 +1976,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name,
{
void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1, NULL )
: find_ordinal_export( module, exports, exp_size, ord - exports->Base, NULL );
@@ -138,9 +138,9 @@ index 336b11c6344..46f74df7130 100644
{
*address = proc;
ret = STATUS_SUCCESS;
@@ -1934,6 +2029,8 @@ static void build_ntdll_module(void)
assert( wm );
@@ -2121,6 +2216,8 @@ static void build_ntdll_module(void)
wm->ldr.Flags &= ~LDR_DONT_RESOLVE_REFS;
node_ntdll = wm->ldr.DdagNode;
if (TRACE_ON(relay)) RELAY_SetupDLL( meminfo.AllocationBase );
+
+ hidden_exports_init( wm->ldr.FullDllName.Buffer );
@@ -148,10 +148,10 @@ index 336b11c6344..46f74df7130 100644
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 400ac9398a5..55695f2c370 100644
index 27de37d5b88..a8c5e335870 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -100,6 +100,11 @@ static inline TEB64 *NtCurrentTeb64(void) { return (TEB64 *)NtCurrentTeb()->GdiB
@@ -149,6 +149,11 @@ static inline TEB64 *NtCurrentTeb64(void) { return (TEB64 *)NtCurrentTeb()->GdiB
NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*);
@@ -164,5 +164,5 @@ index 400ac9398a5..55695f2c370 100644
static inline void ascii_to_unicode( WCHAR *dst, const char *src, size_t len )
{
--
2.30.2
2.33.0

View File

@@ -1,209 +0,0 @@
From 2cecfc6394a63db07b92c572d0702cf2a8bf0f31 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Thu, 9 Jan 2020 14:51:05 -0600
Subject: [PATCH] ntdll/tests: Add some tests for Rtl* resources.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
---
dlls/ntdll/tests/sync.c | 164 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 164 insertions(+)
diff --git a/dlls/ntdll/tests/sync.c b/dlls/ntdll/tests/sync.c
index 3d6b6a3a04d..21124dae922 100644
--- a/dlls/ntdll/tests/sync.c
+++ b/dlls/ntdll/tests/sync.c
@@ -44,7 +44,12 @@ static NTSTATUS (WINAPI *pNtReleaseSemaphore)( HANDLE, ULONG, ULONG * );
static NTSTATUS (WINAPI *pNtResetEvent)( HANDLE, LONG * );
static NTSTATUS (WINAPI *pNtSetEvent)( HANDLE, LONG * );
static NTSTATUS (WINAPI *pNtWaitForKeyedEvent)( HANDLE, const void *, BOOLEAN, const LARGE_INTEGER * );
+static BOOLEAN (WINAPI *pRtlAcquireResourceExclusive)( RTL_RWLOCK *, BOOLEAN );
+static BOOLEAN (WINAPI *pRtlAcquireResourceShared)( RTL_RWLOCK *, BOOLEAN );
+static void (WINAPI *pRtlDeleteResource)( RTL_RWLOCK * );
+static void (WINAPI *pRtlInitializeResource)( RTL_RWLOCK * );
static void (WINAPI *pRtlInitUnicodeString)( UNICODE_STRING *, const WCHAR * );
+static void (WINAPI *pRtlReleaseResource)( RTL_RWLOCK * );
static NTSTATUS (WINAPI *pRtlWaitOnAddress)( const void *, const void *, SIZE_T, const LARGE_INTEGER * );
static void (WINAPI *pRtlWakeAddressAll)( const void * );
static void (WINAPI *pRtlWakeAddressSingle)( const void * );
@@ -595,6 +600,159 @@ static void test_wait_on_address(void)
ok(address == 0, "got %s\n", wine_dbgstr_longlong(address));
}
+static HANDLE thread_ready, thread_done;
+
+static DWORD WINAPI resource_shared_thread(void *arg)
+{
+ RTL_RWLOCK *resource = arg;
+ BOOLEAN ret;
+
+ ret = pRtlAcquireResourceShared(resource, TRUE);
+ ok(ret == TRUE, "got %u\n", ret);
+
+ SetEvent(thread_ready);
+ ok(!WaitForSingleObject(thread_done, 1000), "wait failed\n");
+ pRtlReleaseResource(resource);
+ return 0;
+}
+
+static DWORD WINAPI resource_exclusive_thread(void *arg)
+{
+ RTL_RWLOCK *resource = arg;
+ BOOLEAN ret;
+
+ ret = pRtlAcquireResourceExclusive(resource, TRUE);
+ ok(ret == TRUE, "got %u\n", ret);
+
+ SetEvent(thread_ready);
+ ok(!WaitForSingleObject(thread_done, 1000), "wait failed\n");
+ pRtlReleaseResource(resource);
+ return 0;
+}
+
+static void test_resource(void)
+{
+ HANDLE thread, thread2;
+ RTL_RWLOCK resource;
+ BOOLEAN ret;
+
+ pRtlInitializeResource(&resource);
+ thread_ready = CreateEventA(NULL, FALSE, FALSE, NULL);
+ thread_done = CreateEventA(NULL, FALSE, FALSE, NULL);
+
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == FALSE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+ pRtlReleaseResource(&resource);
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+ pRtlReleaseResource(&resource);
+ pRtlReleaseResource(&resource);
+
+ /* Do not acquire the resource ourselves, but spawn a shared thread holding it. */
+
+ thread = CreateThread(NULL, 0, resource_shared_thread, &resource, 0, NULL);
+ ok(!WaitForSingleObject(thread_ready, 1000), "wait failed\n");
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == FALSE, "got %u\n", ret);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+
+ SetEvent(thread_done);
+ ok(!WaitForSingleObject(thread, 1000), "wait failed\n");
+ CloseHandle(thread);
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+
+ /* Acquire the resource as exclusive, and then spawn a shared thread. */
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ thread = CreateThread(NULL, 0, resource_shared_thread, &resource, 0, NULL);
+ ok(WaitForSingleObject(thread_ready, 100) == WAIT_TIMEOUT, "expected timeout\n");
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+
+ pRtlReleaseResource(&resource);
+ ok(!WaitForSingleObject(thread_ready, 1000), "wait failed\n");
+ SetEvent(thread_done);
+ ok(!WaitForSingleObject(thread, 1000), "wait failed\n");
+ CloseHandle(thread);
+
+ /* Acquire the resource as shared, and then spawn an exclusive thread. */
+
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ thread = CreateThread(NULL, 0, resource_exclusive_thread, &resource, 0, NULL);
+ ok(WaitForSingleObject(thread_ready, 100) == WAIT_TIMEOUT, "expected timeout\n");
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == FALSE, "got %u\n", ret);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+
+ pRtlReleaseResource(&resource);
+ ok(!WaitForSingleObject(thread_ready, 1000), "wait failed\n");
+ SetEvent(thread_done);
+ ok(!WaitForSingleObject(thread, 1000), "wait failed\n");
+ CloseHandle(thread);
+
+ /* Spawn a shared and then exclusive waiter. */
+ thread = CreateThread(NULL, 0, resource_shared_thread, &resource, 0, NULL);
+ ok(!WaitForSingleObject(thread_ready, 1000), "wait failed\n");
+ thread2 = CreateThread(NULL, 0, resource_exclusive_thread, &resource, 0, NULL);
+ ok(WaitForSingleObject(thread_ready, 100) == WAIT_TIMEOUT, "expected timeout\n");
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == FALSE, "got %u\n", ret);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+
+ SetEvent(thread_done);
+ ok(!WaitForSingleObject(thread, 1000), "wait failed\n");
+ CloseHandle(thread);
+
+ ok(!WaitForSingleObject(thread_ready, 1000), "wait failed\n");
+ SetEvent(thread_done);
+ ok(!WaitForSingleObject(thread2, 1000), "wait failed\n");
+ CloseHandle(thread2);
+
+ ret = pRtlAcquireResourceExclusive(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+ ret = pRtlAcquireResourceShared(&resource, FALSE);
+ ok(ret == TRUE, "got %u\n", ret);
+ pRtlReleaseResource(&resource);
+
+ CloseHandle(thread_ready);
+ CloseHandle(thread_done);
+ pRtlDeleteResource(&resource);
+}
+
START_TEST(sync)
{
HMODULE module = GetModuleHandleA("ntdll.dll");
@@ -617,7 +775,12 @@ START_TEST(sync)
pNtResetEvent = (void *)GetProcAddress(module, "NtResetEvent");
pNtSetEvent = (void *)GetProcAddress(module, "NtSetEvent");
pNtWaitForKeyedEvent = (void *)GetProcAddress(module, "NtWaitForKeyedEvent");
+ pRtlAcquireResourceExclusive = (void *)GetProcAddress(module, "RtlAcquireResourceExclusive");
+ pRtlAcquireResourceShared = (void *)GetProcAddress(module, "RtlAcquireResourceShared");
+ pRtlDeleteResource = (void *)GetProcAddress(module, "RtlDeleteResource");
+ pRtlInitializeResource = (void *)GetProcAddress(module, "RtlInitializeResource");
pRtlInitUnicodeString = (void *)GetProcAddress(module, "RtlInitUnicodeString");
+ pRtlReleaseResource = (void *)GetProcAddress(module, "RtlReleaseResource");
pRtlWaitOnAddress = (void *)GetProcAddress(module, "RtlWaitOnAddress");
pRtlWakeAddressAll = (void *)GetProcAddress(module, "RtlWakeAddressAll");
pRtlWakeAddressSingle = (void *)GetProcAddress(module, "RtlWakeAddressSingle");
@@ -627,4 +790,5 @@ START_TEST(sync)
test_mutant();
test_semaphore();
test_keyed_events();
+ test_resource();
}
--
2.30.2

View File

@@ -1,4 +1,4 @@
From 683cdfce393f1a4fca23d1520866d3e663a8c60f Mon Sep 17 00:00:00 2001
From c83cd4d1151d182c3ae35f87b20b6ba30cf24316 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 7 Jun 2021 16:26:18 -0500
Subject: [PATCH] ntdll: Reimplement Win32 futexes on top of thread-ID alerts.
@@ -6,34 +6,36 @@ Subject: [PATCH] ntdll: Reimplement Win32 futexes on top of thread-ID alerts.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
---
dlls/ntdll/sync.c | 215 ++++++++++++++++++++++++++++++++++++++-
dlls/ntdll/sync.c | 214 ++++++++++++++++++++++++++++++++++++++-
dlls/ntdll/unix/loader.c | 3 -
dlls/ntdll/unix/sync.c | 162 -----------------------------
dlls/ntdll/unixlib.h | 6 +-
4 files changed, 213 insertions(+), 173 deletions(-)
4 files changed, 212 insertions(+), 173 deletions(-)
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index f1263ae33fd..c0a6e3a729e 100644
index bfb30661864..db68a466d8a 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -34,8 +34,16 @@
@@ -34,11 +34,18 @@
#include "windef.h"
#include "winternl.h"
#include "wine/debug.h"
+#include "wine/list.h"
#include "ntdll_misc.h"
+WINE_DEFAULT_DEBUG_CHANNEL(sync);
+
WINE_DEFAULT_DEBUG_CHANNEL(sync);
WINE_DECLARE_DEBUG_CHANNEL(relay);
+static const char *debugstr_timeout( const LARGE_INTEGER *timeout )
+{
+ if (!timeout) return "(infinite)";
+ return wine_dbgstr_longlong( timeout->QuadPart );
+}
+
/******************************************************************
* RtlRunOnceInitialize (NTDLL.@)
@@ -530,13 +538,142 @@ NTSTATUS WINAPI RtlSleepConditionVariableSRW( RTL_CONDITION_VARIABLE *variable,
*/
@@ -863,13 +870,142 @@ NTSTATUS WINAPI RtlSleepConditionVariableSRW( RTL_CONDITION_VARIABLE *variable,
return status;
}
@@ -177,7 +179,7 @@ index f1263ae33fd..c0a6e3a729e 100644
}
/***********************************************************************
@@ -544,7 +681,42 @@ NTSTATUS WINAPI RtlWaitOnAddress( const void *addr, const void *cmp, SIZE_T size
@@ -877,7 +1013,42 @@ NTSTATUS WINAPI RtlWaitOnAddress( const void *addr, const void *cmp, SIZE_T size
*/
void WINAPI RtlWakeAddressAll( const void *addr )
{
@@ -221,7 +223,7 @@ index f1263ae33fd..c0a6e3a729e 100644
}
/***********************************************************************
@@ -552,5 +724,42 @@ void WINAPI RtlWakeAddressAll( const void *addr )
@@ -885,5 +1056,42 @@ void WINAPI RtlWakeAddressAll( const void *addr )
*/
void WINAPI RtlWakeAddressSingle( const void *addr )
{
@@ -266,10 +268,10 @@ index f1263ae33fd..c0a6e3a729e 100644
+ if (tid) NtAlertThreadByThreadId( (HANDLE)(DWORD_PTR)tid );
}
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 8720660eb6b..269788bcf91 100644
index a9645d45653..2504311053b 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -2151,9 +2151,6 @@ static struct unix_funcs unix_funcs =
@@ -2148,9 +2148,6 @@ static struct unix_funcs unix_funcs =
#endif
DbgUiIssueRemoteBreakin,
RtlGetSystemTimePrecise,
@@ -472,15 +474,15 @@ index 7f5d9a49ef5..43838e593dc 100644
- mutex_unlock( &addr_mutex );
-}
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 4b7c8b45be7..921ceedbdb2 100644
index d56259deff2..c602e6c9af0 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 126
+#define NTDLL_UNIXLIB_VERSION 127
-#define NTDLL_UNIXLIB_VERSION 127
+#define NTDLL_UNIXLIB_VERSION 128
struct unix_funcs
{

View File

@@ -1,4 +1,4 @@
From d43977918339fdda79e06331502254eaf456adab Mon Sep 17 00:00:00 2001
From ce1c07228439555e3cdf5e68298fc7cf542a0ff5 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 31 Aug 2020 23:38:09 -0500
Subject: [PATCH] ntdll: Reimplement the critical section fast path on top of
@@ -84,10 +84,10 @@ index db68a466d8a..3a47679bb60 100644
return ret;
}
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 269788bcf91..5302b7f1638 100644
index 2504311053b..173e611b018 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -2151,9 +2151,6 @@ static struct unix_funcs unix_funcs =
@@ -2148,9 +2148,6 @@ static struct unix_funcs unix_funcs =
#endif
DbgUiIssueRemoteBreakin,
RtlGetSystemTimePrecise,
@@ -233,15 +233,15 @@ index 6b8835bcba0..d142fa894b1 100644
extern NTSTATUS CDECL fast_RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 921ceedbdb2..d86501dfb5e 100644
index c602e6c9af0..25a624c3e21 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 127
+#define NTDLL_UNIXLIB_VERSION 128
-#define NTDLL_UNIXLIB_VERSION 128
+#define NTDLL_UNIXLIB_VERSION 129
struct unix_funcs
{

View File

@@ -1,4 +1,4 @@
From a90c16005d368581ea802f9fb2780fcb10d23566 Mon Sep 17 00:00:00 2001
From cde4ea0e9ec950f3f2dd95b3f96cee83b948da3d Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Mon, 31 Aug 2020 23:55:29 -0500
Subject: [PATCH] ntdll: Get rid of the direct futex path for condition
@@ -81,18 +81,18 @@ index 3a47679bb60..6e68d07b81b 100644
if (flags & RTL_CONDITION_VARIABLE_LOCKMODE_SHARED)
RtlAcquireSRWLockShared( lock );
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 5302b7f1638..bb25f50581c 100644
index 173e611b018..86cd373b21d 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -2157,8 +2157,6 @@ static struct unix_funcs unix_funcs =
@@ -2154,8 +2154,6 @@ static struct unix_funcs unix_funcs =
fast_RtlAcquireSRWLockShared,
fast_RtlReleaseSRWLockExclusive,
fast_RtlReleaseSRWLockShared,
- fast_RtlWakeConditionVariable,
- fast_wait_cv,
ntdll_atan,
ntdll_ceil,
ntdll_cos,
load_so_dll,
init_builtin_dll,
init_unix_lib,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 6a636d30f21..f0267c2df1c 100644
--- a/dlls/ntdll/unix/sync.c
@@ -203,15 +203,15 @@ index d142fa894b1..f192215f32a 100644
extern NTSTATUS CDECL unwind_builtin_dll( ULONG type, struct _DISPATCHER_CONTEXT *dispatch,
CONTEXT *context ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index d86501dfb5e..5b56f1f2cf1 100644
index 25a624c3e21..51771b1b5d6 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 128
+#define NTDLL_UNIXLIB_VERSION 129
-#define NTDLL_UNIXLIB_VERSION 129
+#define NTDLL_UNIXLIB_VERSION 130
struct unix_funcs
{
@@ -223,8 +223,8 @@ index d86501dfb5e..5b56f1f2cf1 100644
- NTSTATUS (CDECL *fast_wait_cv)( RTL_CONDITION_VARIABLE *variable, const void *value,
- const LARGE_INTEGER *timeout );
/* math functions */
double (CDECL *atan)( double d );
/* loader functions */
NTSTATUS (CDECL *load_so_dll)( UNICODE_STRING *nt_name, void **module );
--
2.33.0

View File

@@ -1,4 +1,4 @@
From f032b2f1811e4a13a817b69b1f81fa9171e70502 Mon Sep 17 00:00:00 2001
From 0c3f702c6a607cec5d8553b27ed9fd35f1864211 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sun, 22 Nov 2020 20:51:10 -0600
Subject: [PATCH] ntdll: Reimplement SRW locks on top of Win32 futexes.
@@ -393,10 +393,10 @@ index 6e68d07b81b..e380f3e4e93 100644
/***********************************************************************
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index bb25f50581c..a8dc128adcf 100644
index 86cd373b21d..4d3b5593b96 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -2151,12 +2151,6 @@ static struct unix_funcs unix_funcs =
@@ -2148,12 +2148,6 @@ static struct unix_funcs unix_funcs =
#endif
DbgUiIssueRemoteBreakin,
RtlGetSystemTimePrecise,
@@ -406,9 +406,9 @@ index bb25f50581c..a8dc128adcf 100644
- fast_RtlAcquireSRWLockShared,
- fast_RtlReleaseSRWLockExclusive,
- fast_RtlReleaseSRWLockShared,
ntdll_atan,
ntdll_ceil,
ntdll_cos,
load_so_dll,
init_builtin_dll,
init_unix_lib,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index f0267c2df1c..19a499ff2c9 100644
--- a/dlls/ntdll/unix/sync.c
@@ -764,15 +764,15 @@ index f192215f32a..fc52b7d210e 100644
extern NTSTATUS CDECL unwind_builtin_dll( ULONG type, struct _DISPATCHER_CONTEXT *dispatch,
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 5b56f1f2cf1..a3eaf9a59d0 100644
index 51771b1b5d6..7a63f6f1ec6 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -26,7 +26,7 @@
struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 129
+#define NTDLL_UNIXLIB_VERSION 130
-#define NTDLL_UNIXLIB_VERSION 130
+#define NTDLL_UNIXLIB_VERSION 131
struct unix_funcs
{
@@ -788,9 +788,9 @@ index 5b56f1f2cf1..a3eaf9a59d0 100644
- NTSTATUS (CDECL *fast_RtlReleaseSRWLockExclusive)( RTL_SRWLOCK *lock );
- NTSTATUS (CDECL *fast_RtlReleaseSRWLockShared)( RTL_SRWLOCK *lock );
-
/* math functions */
double (CDECL *atan)( double d );
double (CDECL *ceil)( double d );
/* loader functions */
NTSTATUS (CDECL *load_so_dll)( UNICODE_STRING *nt_name, void **module );
void (CDECL *init_builtin_dll)( void *module );
--
2.33.0

View File

@@ -1,4 +1,4 @@
From f0c0ce75dc3ad0f1ea033bab64ed22cec0d5ca93 Mon Sep 17 00:00:00 2001
From 4b28fdca0eed2a8307b7f0acb26748713a87181a Mon Sep 17 00:00:00 2001
From: Alex Henrie <alexhenrie24@gmail.com>
Date: Tue, 29 Dec 2015 00:48:02 -0700
Subject: [PATCH] mountmgr.sys: Do a device check before returning a default
@@ -10,20 +10,20 @@ Fixes https://bugs.winehq.org/show_bug.cgi?id=39793
1 file changed, 24 insertions(+)
diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c
index 37ba33840b5..c8af6856043 100644
index 4dfe0c62916..f196ca9803f 100644
--- a/dlls/mountmgr.sys/device.c
+++ b/dlls/mountmgr.sys/device.c
@@ -27,6 +27,9 @@
#include <stdio.h>
@@ -28,6 +28,9 @@
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#endif
#include <sys/time.h>
#include <sys/stat.h>
#ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
@@ -1970,6 +1973,27 @@ static BOOL create_port_device( DRIVER_OBJECT *driver, int n, const char *unix_p
@@ -2241,6 +2244,27 @@ static BOOL create_port_device( DRIVER_OBJECT *driver, int n, const char *unix_p
sprintfW( dos_name, dos_name_format, n );
@@ -52,5 +52,5 @@ index 37ba33840b5..c8af6856043 100644
unlink( dosdevices_path );
if (symlink( unix_path, dosdevices_path ) != 0)
--
2.28.0
2.33.0

View File

@@ -1,4 +1,4 @@
From dd7071e971c22e8100510f51763b0efa4e03eb33 Mon Sep 17 00:00:00 2001
From c16f89f347e49c107a46dda6d3b9bb811ccceb47 Mon Sep 17 00:00:00 2001
From: Andrew Wesie <awesie@gmail.com>
Date: Fri, 24 Apr 2020 14:55:14 -0500
Subject: [PATCH] ntdll: Track if a WRITECOPY page has been modified.
@@ -12,10 +12,10 @@ Signed-off-by: Andrew Wesie <awesie@gmail.com>
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 312448de4a0..37264c91689 100644
index d727ff341df..d39f73c8d85 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -141,6 +141,7 @@ struct file_view
@@ -125,6 +125,7 @@ struct file_view
#define VPROT_GUARD 0x10
#define VPROT_COMMITTED 0x20
#define VPROT_WRITEWATCH 0x40
@@ -23,7 +23,7 @@ index 312448de4a0..37264c91689 100644
/* per-mapping protection flags */
#define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */
#define VPROT_NATIVE 0x0400
@@ -1136,7 +1137,7 @@ static int get_unix_prot( BYTE vprot )
@@ -1120,7 +1121,7 @@ static int get_unix_prot( BYTE vprot )
#if defined(__i386__)
if (vprot & VPROT_WRITECOPY)
{
@@ -32,7 +32,7 @@ index 312448de4a0..37264c91689 100644
prot = (prot & ~PROT_WRITE) | PROT_READ;
else
prot |= PROT_WRITE | PROT_READ;
@@ -1573,7 +1574,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
@@ -1557,7 +1558,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
*/
static DWORD get_win32_prot( BYTE vprot, unsigned int map_prot )
{
@@ -45,7 +45,7 @@ index 312448de4a0..37264c91689 100644
if (vprot & VPROT_GUARD) ret |= PAGE_GUARD;
if (map_prot & SEC_NOCACHE) ret |= PAGE_NOCACHE;
return ret;
@@ -1684,12 +1689,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr
@@ -1668,12 +1673,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr
if (view->protect & VPROT_WRITEWATCH)
{
/* each page may need different protections depending on write watch flag */
@@ -69,7 +69,7 @@ index 312448de4a0..37264c91689 100644
return TRUE;
}
@@ -3449,7 +3463,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
@@ -3433,7 +3447,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
}
if (vprot & VPROT_WRITECOPY)
{

View File

@@ -1,4 +1,4 @@
From e54feda95d0e88080d118d2079c62f091dffe3e3 Mon Sep 17 00:00:00 2001
From a4d9cd0e60613fac787bb65e6a22fb1b24e19179 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sat, 22 May 2021 17:38:50 -0500
Subject: [PATCH] wined3d: Make depth bounds test into a proper state.
@@ -12,10 +12,10 @@ Subject: [PATCH] wined3d: Make depth bounds test into a proper state.
5 files changed, 98 insertions(+), 31 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 1b4ed519260..33a8519a613 100644
index bcd26b6fbb1..88f47e4437c 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -145,6 +145,7 @@ enum wined3d_cs_op
@@ -152,6 +152,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_SET_RENDER_STATE,
WINED3D_CS_OP_SET_TEXTURE_STATE,
WINED3D_CS_OP_SET_SAMPLER_STATE,
@@ -23,7 +23,7 @@ index 1b4ed519260..33a8519a613 100644
WINED3D_CS_OP_SET_TRANSFORM,
WINED3D_CS_OP_SET_CLIP_PLANE,
WINED3D_CS_OP_SET_COLOR_KEY,
@@ -395,6 +396,12 @@ struct wined3d_cs_set_sampler_state
@@ -402,6 +403,12 @@ struct wined3d_cs_set_sampler_state
DWORD value;
};
@@ -36,7 +36,7 @@ index 1b4ed519260..33a8519a613 100644
struct wined3d_cs_set_transform
{
enum wined3d_cs_op opcode;
@@ -619,6 +626,7 @@ static const char *debug_cs_op(enum wined3d_cs_op op)
@@ -626,6 +633,7 @@ static const char *debug_cs_op(enum wined3d_cs_op op)
WINED3D_TO_STR(WINED3D_CS_OP_SET_RENDER_STATE);
WINED3D_TO_STR(WINED3D_CS_OP_SET_TEXTURE_STATE);
WINED3D_TO_STR(WINED3D_CS_OP_SET_SAMPLER_STATE);
@@ -44,7 +44,7 @@ index 1b4ed519260..33a8519a613 100644
WINED3D_TO_STR(WINED3D_CS_OP_SET_TRANSFORM);
WINED3D_TO_STR(WINED3D_CS_OP_SET_CLIP_PLANE);
WINED3D_TO_STR(WINED3D_CS_OP_SET_COLOR_KEY);
@@ -1939,6 +1947,28 @@ void wined3d_device_context_emit_set_sampler_state(struct wined3d_device_context
@@ -1946,6 +1954,28 @@ void wined3d_device_context_emit_set_sampler_state(struct wined3d_device_context
wined3d_device_context_submit(context, WINED3D_CS_QUEUE_DEFAULT);
}
@@ -73,7 +73,7 @@ index 1b4ed519260..33a8519a613 100644
static void wined3d_cs_exec_set_transform(struct wined3d_cs *cs, const void *data)
{
const struct wined3d_cs_set_transform *op = data;
@@ -2963,6 +2993,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2993,6 +3023,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_SET_RENDER_STATE */ wined3d_cs_exec_set_render_state,
/* WINED3D_CS_OP_SET_TEXTURE_STATE */ wined3d_cs_exec_set_texture_state,
/* WINED3D_CS_OP_SET_SAMPLER_STATE */ wined3d_cs_exec_set_sampler_state,
@@ -82,11 +82,11 @@ index 1b4ed519260..33a8519a613 100644
/* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane,
/* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key,
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 436c4dfe854..b0c7579b4ed 100644
index c5de58c29c9..b5a6bde6602 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1923,6 +1923,14 @@ out:
wined3d_mutex_unlock();
@@ -1925,6 +1925,14 @@ out:
wined3d_device_context_unlock(context);
}
+static void wined3d_device_context_set_depth_bounds(struct wined3d_device_context *context,
@@ -100,7 +100,7 @@ index 436c4dfe854..b0c7579b4ed 100644
void CDECL wined3d_device_context_set_viewports(struct wined3d_device_context *context, unsigned int viewport_count,
const struct wined3d_viewport *viewports)
{
@@ -3612,7 +3620,8 @@ static void wined3d_device_set_texture(struct wined3d_device *device,
@@ -3645,7 +3653,8 @@ static void wined3d_device_set_texture(struct wined3d_device *device,
void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
struct wined3d_stateblock *stateblock)
{
@@ -110,7 +110,7 @@ index 436c4dfe854..b0c7579b4ed 100644
const struct wined3d_stateblock_state *state = &stateblock->stateblock_state;
const struct wined3d_saved_states *changed = &stateblock->changed;
const unsigned int word_bit_count = sizeof(DWORD) * CHAR_BIT;
@@ -3718,7 +3727,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
@@ -3751,7 +3760,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
case WINED3D_RS_COLORWRITEENABLE1:
case WINED3D_RS_COLORWRITEENABLE2:
case WINED3D_RS_COLORWRITEENABLE3:
@@ -119,7 +119,7 @@ index 436c4dfe854..b0c7579b4ed 100644
break;
case WINED3D_RS_BACK_STENCILFAIL:
@@ -3737,7 +3746,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
@@ -3770,7 +3779,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
case WINED3D_RS_ZENABLE:
case WINED3D_RS_ZFUNC:
case WINED3D_RS_ZWRITEENABLE:
@@ -128,7 +128,7 @@ index 436c4dfe854..b0c7579b4ed 100644
break;
case WINED3D_RS_FILLMODE:
@@ -3746,9 +3755,15 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
@@ -3779,9 +3788,15 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
case WINED3D_RS_DEPTHBIAS:
case WINED3D_RS_SCISSORTESTENABLE:
case WINED3D_RS_ANTIALIASEDLINEENABLE:
@@ -145,7 +145,7 @@ index 436c4dfe854..b0c7579b4ed 100644
default:
wined3d_device_set_render_state(device, idx, state->rs[idx]);
break;
@@ -3937,6 +3952,20 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
@@ -3970,6 +3985,20 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
}
}
@@ -167,10 +167,10 @@ index 436c4dfe854..b0c7579b4ed 100644
{
map = changed->textureState[i];
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 8316269afcf..6cd4ff30458 100644
index fd2ade572c8..c873841ffb6 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -2040,42 +2040,31 @@ static void state_tessellation(struct wined3d_context *context, const struct win
@@ -2046,42 +2046,31 @@ static void state_tessellation(struct wined3d_context *context, const struct win
state->render_states[WINED3D_RS_ENABLEADAPTIVETESSELLATION]);
}
@@ -227,7 +227,7 @@ index 8316269afcf..6cd4ff30458 100644
}
static void state_wrapu(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
@@ -4685,6 +4674,8 @@ const struct wined3d_state_entry_template misc_state_template_gl[] =
@@ -4691,6 +4680,8 @@ const struct wined3d_state_entry_template misc_state_template_gl[] =
{ STATE_DEPTH_STENCIL, { STATE_DEPTH_STENCIL, depth_stencil_2s }, EXT_STENCIL_TWO_SIDE },
{ STATE_DEPTH_STENCIL, { STATE_DEPTH_STENCIL, depth_stencil }, WINED3D_GL_EXT_NONE },
{ STATE_STENCIL_REF, { STATE_DEPTH_STENCIL, NULL }, WINED3D_GL_EXT_NONE },
@@ -236,7 +236,7 @@ index 8316269afcf..6cd4ff30458 100644
{ STATE_STREAMSRC, { STATE_STREAMSRC, streamsrc }, WINED3D_GL_EXT_NONE },
{ STATE_VDECL, { STATE_VDECL, vdecl_miscpart }, WINED3D_GL_EXT_NONE },
{ STATE_RASTERIZER, { STATE_RASTERIZER, rasterizer_cc }, ARB_CLIP_CONTROL },
@@ -4798,7 +4789,6 @@ const struct wined3d_state_entry_template misc_state_template_gl[] =
@@ -4804,7 +4795,6 @@ const struct wined3d_state_entry_template misc_state_template_gl[] =
{ STATE_RENDER(WINED3D_RS_ADAPTIVETESS_Y), { STATE_RENDER(WINED3D_RS_ENABLEADAPTIVETESSELLATION),NULL }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_ADAPTIVETESS_Z), { STATE_RENDER(WINED3D_RS_ENABLEADAPTIVETESSELLATION),NULL }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_ADAPTIVETESS_W), { STATE_RENDER(WINED3D_RS_ENABLEADAPTIVETESSELLATION),NULL }, WINED3D_GL_EXT_NONE },
@@ -245,7 +245,7 @@ index 8316269afcf..6cd4ff30458 100644
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), { STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), state_msaa }, ARB_MULTISAMPLE },
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), { STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), state_msaa_w }, WINED3D_GL_EXT_NONE },
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 47718c9f710..39d39396a6e 100644
index 29326668e07..84cdea02991 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -5323,6 +5323,8 @@ const char *debug_d3dstate(DWORD state)
@@ -258,10 +258,10 @@ index 47718c9f710..39d39396a6e 100644
return wine_dbg_sprintf("UNKNOWN_STATE(%#x)", state);
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 56c90ba6606..e7ee1c1478a 100644
index aa8974366a6..735dbff805e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1854,7 +1854,10 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state
@@ -1861,7 +1861,10 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state
#define STATE_STENCIL_REF (STATE_DEPTH_STENCIL + 1)
#define STATE_IS_STENCIL_REF(a) ((a) == STATE_STENCIL_REF)
@@ -273,7 +273,7 @@ index 56c90ba6606..e7ee1c1478a 100644
#define STATE_COMPUTE_SHADER (STATE_COMPUTE_OFFSET)
#define STATE_IS_COMPUTE_SHADER(a) ((a) == STATE_COMPUTE_SHADER)
@@ -3703,6 +3706,13 @@ struct wined3d_light_state
@@ -3714,6 +3717,13 @@ struct wined3d_light_state
const struct wined3d_light_info *lights[WINED3D_MAX_ACTIVE_LIGHTS];
};
@@ -287,7 +287,7 @@ index 56c90ba6606..e7ee1c1478a 100644
#define WINED3D_STATE_NO_REF 0x00000001
#define WINED3D_STATE_INIT_DEFAULT 0x00000002
@@ -3757,8 +3767,11 @@ struct wined3d_state
@@ -3768,8 +3778,11 @@ struct wined3d_state
struct wined3d_blend_state *blend_state;
struct wined3d_color blend_factor;
unsigned int sample_mask;
@@ -299,7 +299,7 @@ index 56c90ba6606..e7ee1c1478a 100644
struct wined3d_rasterizer_state *rasterizer_state;
};
@@ -4878,6 +4891,8 @@ void wined3d_device_context_emit_set_clip_plane(struct wined3d_device_context *c
@@ -4914,6 +4927,8 @@ void wined3d_device_context_emit_set_clip_plane(struct wined3d_device_context *c
void wined3d_device_context_emit_set_constant_buffers(struct wined3d_device_context *context,
enum wined3d_shader_type type, unsigned int start_idx, unsigned int count,
const struct wined3d_constant_buffer_state *buffers) DECLSPEC_HIDDEN;

View File

@@ -1,4 +1,4 @@
From c7cbd42a6085d03a94ee4ac9b77834b3725bf033 Mon Sep 17 00:00:00 2001
From 6c3c8c98a9f28aa2d51626fde58efcb78cf08ab1 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sat, 22 May 2021 18:11:07 -0500
Subject: [PATCH] nvapi: Implement NvAPI_D3D11_SetDepthBoundsTest().
@@ -117,11 +117,11 @@ index c8b66ac2fa3..b8b4750203a 100644
/* d3d9 tests */
wc.lpfnWndProc = DefWindowProcA;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index b0c7579b4ed..8c61c530812 100644
index b5a6bde6602..607af1514dc 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1923,7 +1923,7 @@ out:
wined3d_mutex_unlock();
@@ -1925,7 +1925,7 @@ out:
wined3d_device_context_unlock(context);
}
-static void wined3d_device_context_set_depth_bounds(struct wined3d_device_context *context,
@@ -130,7 +130,7 @@ index b0c7579b4ed..8c61c530812 100644
{
TRACE("context %p, enable %d, min %.8e, max %.8e.\n", context, enable, min, max);
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index 1bce4def265..802194dcbec 100644
index 48bea5980ff..81ac821c1c6 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -124,6 +124,7 @@
@@ -142,7 +142,7 @@ index 1bce4def265..802194dcbec 100644
@ cdecl wined3d_device_context_set_depth_stencil_view(ptr ptr)
@ cdecl wined3d_device_context_set_index_buffer(ptr ptr long long)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 7be893b8f21..689fc55fdfe 100644
index 7a6588ea4f4..d90569238fc 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2513,6 +2513,8 @@ void __cdecl wined3d_device_context_set_blend_state(struct wined3d_device_contex

Some files were not shown because too many files have changed in this diff Show More