Compare commits

...

63 Commits
v5.4 ... v5.7

Author SHA1 Message Date
Alistair Leslie-Hughes
2ad422ff4d Release v5.7 2020-04-25 21:49:25 +10:00
Paul Gofman
a8b95783eb Added ntdll-FLS_Callbacks patchset. 2020-04-25 13:12:04 +03:00
Zebediah Figura
4581daea3b Rebase against c44e0cf60ad1a967d80fafb427974332b35a0071. 2020-04-24 16:35:33 -05:00
Paul Gofman
77d29cbee9 Updated ntdll-Syscall_Emulation patchset. 2020-04-24 13:43:49 +03:00
Zebediah Figura
f90eb74f8d Rebase against 28bc1bb463eb4075c6a113ba5c279a0506c6daea. 2020-04-23 23:15:23 -05:00
Zebediah Figura
abc772e286 Add missing server object operations to struct context.
Missed by yesterday's rebase.
2020-04-23 10:57:26 -05:00
Zebediah Figura
2c2eabb5c0 Rebase against f52b33c63064aa59f48a9c10d624e3508da55b88. 2020-04-22 17:09:11 -05:00
Paul Gofman
75637c26ea Updated ntdll-Syscall_Emulation patchset. 2020-04-22 19:14:29 +03:00
Alistair Leslie-Hughes
4e0031b058 Rebase against f65cfbfe9b20e38537c7cb8608e7f411c9e8b725 2020-04-22 08:35:52 +10:00
Alistair Leslie-Hughes
0d8d1f0447 Rebase against f31a29b8d1ea478af28f14cdaf3db1515a932853 2020-04-21 08:19:34 +10:00
Alistair Leslie-Hughes
029c249e78 Rebase against 59987bc9ecdd0dbafd768a95c21a14884bc77c07 2020-04-18 14:54:07 +10:00
Zebediah Figura
8d4d0a840e user32-rawinput-mouse: Don't send raw input messages when there's no windows or sinks to receive them.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48946
2020-04-16 17:55:20 -05:00
Zebediah Figura
767b90c5dd Rebase against c18152630362c1bff1813fe8ad5c75ffb8dbb7cf. 2020-04-16 17:42:47 -05:00
Alistair Leslie-Hughes
a23c076055 Rebase against dc214bfad723efeea96a5d33eb7fc0802dc34be9 2020-04-15 10:14:15 +10:00
Paul Gofman
e2c2447841 Updated ntdll-Syscall_Emulation patchset. 2020-04-14 14:32:16 +03:00
Alistair Leslie-Hughes
4861c47f2b Remove macos compile patch
Fixed upstream.
2020-04-14 16:27:59 +10:00
Zebediah Figura
437038604a Rebase against 5e75310837e5ec77ebc361d689ea3279fa49ebac. 2020-04-13 18:10:11 -05:00
Alistair Leslie-Hughes
4c160ec82a Release v5.6.1
Fix macos compile issue.
2020-04-11 19:11:22 +10:00
Alistair Leslie-Hughes
528144a4ad Added secur32-macos-compile patchset 2020-04-11 17:19:00 +10:00
Alistair Leslie-Hughes
76900de5bb Release v5.6 2020-04-11 11:32:24 +10:00
Alistair Leslie-Hughes
776306026a Added ntdll-LDR_IMAGE_IS_DLL patchset 2020-04-11 11:20:50 +10:00
Alistair Leslie-Hughes
c4c72e90ab Rebase against 2b0977fc711e1faadfef69e3a46c2d1848b4826b 2020-04-11 11:10:52 +10:00
Zebediah Figura
f8c3c9a6f8 Rebase against 2b0977fc711e1faadfef69e3a46c2d1848b4826b. 2020-04-09 20:55:11 -05:00
Alistair Leslie-Hughes
39678da196 Updated ntdll-RtlIpv4StringToAddress patchset 2020-04-09 08:15:42 +10:00
Zebediah Figura
be8a670b5b user32-rawinput-mouse: Fix dinput rawinput events sequence number.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48833
2020-04-08 09:51:35 -05:00
Zebediah Figura
4d11895651 patchinstall.py: Escape characters in C strings. 2020-04-08 09:42:45 -05:00
Alistair Leslie-Hughes
bf3fbb7bdf Rebase against 38e95ed2227dd3f0fc3d1394c884265d43e3b283 2020-04-08 10:22:04 +10:00
Zebediah Figura
160a5024b4 patchinstall.py: Some fixes. 2020-04-07 10:10:11 -05:00
Zebediah Figura
f36c844f11 patchinstall.py: Bring up to patchinstall.sh.
I think as of this commit it's feature-complete, minus a couple things I'm not sure we still care about.
2020-04-06 23:33:07 -05:00
Alistair Leslie-Hughes
732ab97a7e Rebase against ca092dcf819174699f9bb1af45a285dff2f6ac81 2020-04-07 08:23:24 +10:00
Zebediah Figura
46fbb7d31e patchinstall.py: New patch installation script. 2020-04-05 12:49:14 -05:00
Zebediah Figura
44d1a45e98 user32-rawinput-nolegacy: Also update the key state if RIDEV_NOLEGACY is used.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48612
2020-04-05 11:38:00 -05:00
Zebediah Figura
f23b6cb7dc user32-rawinput-mouse: Fix some dependencies. 2020-04-05 11:30:28 -05:00
Alistair Leslie-Hughes
4d01e48843 Rebase against 7096ab45444d7b7cbb926b5a51af0cbc46960ed3 2020-04-04 08:55:44 +11:00
Alistair Leslie-Hughes
90109a5fc5 Rebase against 3047385437c7ef36996d0418ac378677f3e9d67c 2020-04-03 08:55:36 +11:00
Alistair Leslie-Hughes
e8abb98858 Updated user32-GetMouseMovePointsEx patchset
Thanks Ryan for the updated patch/

As Ryan pointed out.  Mount & Blade II requires that last point
to be different from the point or else it cannot workout what direction
the mouse moved.

This would need some sort of server side cache of mouse movements which
this function could ask for.
2020-04-02 14:29:12 +11:00
Alistair Leslie-Hughes
56b4eed468 Added user32-GetMouseMovePointsExuser32-GetMouseMovePointsEx patchset 2020-04-02 12:26:54 +11:00
Zebediah Figura
755d1ca559 Rebase against 12c3177ed5cae39de8a9f9111a1cb450296cc8e6. 2020-04-01 18:08:55 -05:00
Alistair Leslie-Hughes
001ea51fb5 Updated ntdll-Hide_Wine_Exports patchset 2020-04-01 17:17:30 +11:00
Alistair Leslie-Hughes
db80e169c7 Updated ntdll-NtDevicePath patchset 2020-04-01 17:17:30 +11:00
Alistair Leslie-Hughes
7757a2d4f6 Updated ntdll-Junction_Points patchset 2020-04-01 16:07:07 +11:00
Alistair Leslie-Hughes
1a980ed93d Rebase against 5c0e699dbad3e4b4494852c6482125bd8bda9148 2020-04-01 10:16:47 +11:00
Alistair Leslie-Hughes
528306ccb6 Rebase against 9bcb1f5195d1e65e0e7afb288d36fee716fe3a60 2020-03-31 08:55:37 +11:00
Alistair Leslie-Hughes
7fe7d87f09 Updated xactengine-initial patchset
Fixes: https://bugs.winehq.org/show_bug.cgi?id=48824
2020-03-30 16:09:46 +11:00
Paul Gofman
805f2e9252 Updated ntdll-Syscall_Emulation patchset.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48840
2020-03-29 19:02:33 +03:00
Alistair Leslie-Hughes
18f7125892 Release v5.5 2020-03-29 09:10:06 +11:00
Alistair Leslie-Hughes
f993930ee6 Add winmm-Replace_OpenFile patchset 2020-03-29 09:03:56 +11:00
Alistair Leslie-Hughes
2a9e87abea Updated ntdll-RtlIpv4StringToAddress patchset 2020-03-29 08:55:38 +11:00
Zebediah Figura
af97ec8ce0 ntdll-avoid-fstatat: Protect cwd manipulation with dir_section. 2020-03-28 14:41:38 -05:00
Zebediah Figura
b14430433d ntdll-avoid-fstatat: New patch. 2020-03-28 13:22:31 -05:00
Zebediah Figura
f9d1798edb Rebase against 123c0543e0bb4c99fbee0a568e786405ff886a93. 2020-03-27 17:28:30 -05:00
Alistair Leslie-Hughes
e5da84dc36 Rebase against 9c190f8118faa2f4708e86340e3e0440f668835b 2020-03-25 08:56:23 +11:00
Alistair Leslie-Hughes
75c7644c3d Rebase against 00e55c8fc0c08e14c39880e62526f8503468b641 2020-03-24 08:55:13 +11:00
Alistair Leslie-Hughes
7c7868f4bb Rebase against 3ddf3a720f2a342141550c973f10854b573d80ed 2020-03-21 11:07:53 +11:00
Alistair Leslie-Hughes
d1a8b6bc14 Rebase against aaa625217b202dc0a22d67e63e941b027146a456 2020-03-20 09:55:13 +11:00
Zebediah Figura
53b02cd0ee Rebase against c43998cb51c53ab9c355c2ff37489d51f9009e2d. 2020-03-18 18:33:10 -05:00
Alistair Leslie-Hughes
36b8b8cc65 Remove winemenubuilder-integration patch 0002
This causes wine-protocol-* to be created, and thus any
http/https/ftp will routed via wine.
2020-03-18 11:29:10 +11:00
Alistair Leslie-Hughes
13536af59c Rebase against 7ad740cd29c6bd87238df6231689b861058bc5a8 2020-03-18 10:38:14 +11:00
Paul Gofman
a6f3bd989e Updated wined3d-SWVP-shaders, wined3d-Indexed_Vertex_Blending patchsets.
Minor cleanup.
2020-03-17 13:37:18 +03:00
Alistair Leslie-Hughes
0830db32cd Rebase against c2ee20c95bea55069d32cfa69a95ae3e4486a02b 2020-03-17 09:37:12 +11:00
Paul Gofman
cd7d77fe36 Updated ddraw-Rendering_Targets patchset.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48757
2020-03-16 09:07:19 +03:00
Alistair Leslie-Hughes
2e9977f4ac Add winemenubuilder-integration patchset 2020-03-16 09:24:08 +11:00
Zebediah Figura
a1246b5e92 xactengine-initial: Build an import library for x3daudio1_7.
Should fix test compilation.
2020-03-14 11:52:09 -05:00
149 changed files with 3406 additions and 5525 deletions

View File

@@ -1,4 +1,4 @@
From d216f85a593a09e7983d9178fb3e1f20bfcf08cc Mon Sep 17 00:00:00 2001
From 63d2046a8f4388fbc7c12a07ae5f412fccc1b202 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 29 May 2014 23:43:45 +0200
Subject: [PATCH] loader: Add commandline option --patches to show the patch
@@ -14,7 +14,7 @@ Subject: [PATCH] loader: Add commandline option --patches to show the patch
6 files changed, 58 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
index c29a1c26c..8906e1942 100644
index c29a1c26c26..8906e194272 100644
--- a/dlls/ntdll/misc.c
+++ b/dlls/ntdll/misc.c
@@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void)
@@ -33,10 +33,10 @@ index c29a1c26c..8906e1942 100644
* wine_get_build_id (NTDLL.@)
*/
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 7aa953ca6..cf7d5b6f9 100644
index e61a2578da5..52db67fd978 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1566,6 +1566,7 @@
@@ -1571,6 +1571,7 @@
# Version
@ cdecl wine_get_version() NTDLL_wine_get_version
@@ -45,7 +45,7 @@ index 7aa953ca6..cf7d5b6f9 100644
@ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version
diff --git a/include/wine/library.h b/include/wine/library.h
index a6fe28059..511bf4722 100644
index f338c4da190..1f992da6062 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -47,6 +47,7 @@ extern const char *wine_get_data_dir(void);
@@ -57,7 +57,7 @@ index a6fe28059..511bf4722 100644
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 2a3314cbf..5b66c063d 100644
index 2a3314cbfda..5b66c063db6 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -504,6 +504,12 @@ const char *wine_get_version(void)
@@ -74,22 +74,22 @@ index 2a3314cbf..5b66c063d 100644
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 3f2c430fa..ca46979f5 100644
index 7ea849b908e..a7359ee7872 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -28,6 +28,7 @@ WINE_1.0
wine_get_ss;
@@ -22,6 +22,7 @@ WINE_1.0
wine_get_server_dir;
wine_get_user_name;
wine_get_version;
+ wine_get_patches;
wine_init;
wine_init_argv0_path;
wine_ldt_alloc_entries;
wine_mmap_add_reserved_area;
diff --git a/loader/main.c b/loader/main.c
index f197cf802..f6629128d 100644
index 407c897892d..d97d6b28bf8 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -54,7 +54,8 @@ static void check_command_line( int argc, char *argv[] )
@@ -53,7 +53,8 @@ static void check_command_line( int argc, char *argv[] )
static const char usage[] =
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
@@ -99,7 +99,7 @@ index f197cf802..f6629128d 100644
if (argc <= 1)
{
@@ -71,6 +72,45 @@ static void check_command_line( int argc, char *argv[] )
@@ -70,6 +71,45 @@ static void check_command_line( int argc, char *argv[] )
printf( "%s\n", wine_get_build_id() );
exit(0);
}
@@ -146,5 +146,5 @@ index f197cf802..f6629128d 100644
--
2.25.0
2.25.1

View File

@@ -1,313 +0,0 @@
From c07a490a6950f4efe563e38ca78b1aa459dfad86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 28 May 2014 19:50:51 +0200
Subject: [PATCH] loader: Add commandline option --check-libs.
---
include/wine/library.h | 2 +
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 ++++++++++++
libs/wine/wine.map | 2 +
loader/main.c | 50 ++++++++++++++++-
5 files changed, 213 insertions(+), 1 deletion(-)
diff --git a/include/wine/library.h b/include/wine/library.h
index 511bf4722..557cec20c 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -44,6 +44,7 @@ extern "C" {
extern const char *wine_get_build_dir(void);
extern const char *wine_get_config_dir(void);
extern const char *wine_get_data_dir(void);
+extern const char **wine_get_libs(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
@@ -56,6 +57,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
typedef void (*load_dll_callback_t)( void *, const char * );
+extern int wine_dladdr( void *addr, void *info, char *error, size_t errorsize );
extern void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize );
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 5b66c063d..e0988513e 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -470,6 +470,130 @@ const char *wine_get_build_dir(void)
return build_dir;
}
+const char *wine_libs[] = {
+#ifdef SONAME_LIBCAIRO
+ SONAME_LIBCAIRO,
+#endif
+#ifdef SONAME_LIBCAPI20
+ SONAME_LIBCAPI20,
+#endif
+#ifdef SONAME_LIBCUPS
+ SONAME_LIBCUPS,
+#endif
+#ifdef SONAME_LIBCURSES
+ SONAME_LIBCURSES,
+#endif
+#ifdef SONAME_LIBDBUS_1
+ SONAME_LIBDBUS_1,
+#endif
+#ifdef SONAME_LIBFONTCONFIG
+ SONAME_LIBFONTCONFIG,
+#endif
+#ifdef SONAME_LIBFREETYPE
+ SONAME_LIBFREETYPE,
+#endif
+#ifdef SONAME_LIBGL
+ SONAME_LIBGL,
+#endif
+#ifdef SONAME_LIBGNUTLS
+ SONAME_LIBGNUTLS,
+#endif
+#ifdef SONAME_LIBGOBJECT_2_0
+ SONAME_LIBGOBJECT_2_0,
+#endif
+#ifdef SONAME_LIBGSM
+ SONAME_LIBGSM,
+#endif
+#ifdef SONAME_LIBGTK_3
+ SONAME_LIBGTK_3,
+#endif
+#ifdef SONAME_LIBHAL
+ SONAME_LIBHAL,
+#endif
+#ifdef SONAME_LIBJPEG
+ SONAME_LIBJPEG,
+#endif
+#ifdef SONAME_LIBNCURSES
+ SONAME_LIBNCURSES,
+#endif
+#ifdef SONAME_LIBNETAPI
+ SONAME_LIBNETAPI,
+#endif
+#ifdef SONAME_LIBODBC
+ SONAME_LIBODBC,
+#endif
+#ifdef SONAME_LIBOSMESA
+ SONAME_LIBOSMESA,
+#endif
+#ifdef SONAME_LIBPCAP
+ SONAME_LIBPCAP,
+#endif
+#ifdef SONAME_LIBPNG
+ SONAME_LIBPNG,
+#endif
+#ifdef SONAME_LIBSANE
+ SONAME_LIBSANE,
+#endif
+#ifdef SONAME_LIBTIFF
+ SONAME_LIBTIFF,
+#endif
+#ifdef SONAME_LIBTXC_DXTN
+ SONAME_LIBTXC_DXTN,
+#endif
+#ifdef SONAME_LIBV4L1
+ SONAME_LIBV4L1,
+#endif
+#ifdef SONAME_LIBVA
+ SONAME_LIBVA,
+#endif
+#ifdef SONAME_LIBVA_DRM
+ SONAME_LIBVA_DRM,
+#endif
+#ifdef SONAME_LIBVA_X11
+ SONAME_LIBVA_X11,
+#endif
+#ifdef SONAME_LIBX11
+ SONAME_LIBX11,
+#endif
+#ifdef SONAME_LIBX11_XCB
+ SONAME_LIBX11_XCB,
+#endif
+#ifdef SONAME_LIBXCOMPOSITE
+ SONAME_LIBXCOMPOSITE,
+#endif
+#ifdef SONAME_LIBXCURSOR
+ SONAME_LIBXCURSOR,
+#endif
+#ifdef SONAME_LIBXEXT
+ SONAME_LIBXEXT,
+#endif
+#ifdef SONAME_LIBXI
+ SONAME_LIBXI,
+#endif
+#ifdef SONAME_LIBXINERAMA
+ SONAME_LIBXINERAMA,
+#endif
+#ifdef SONAME_LIBXRANDR
+ SONAME_LIBXRANDR,
+#endif
+#ifdef SONAME_LIBXRENDER
+ SONAME_LIBXRENDER,
+#endif
+#ifdef SONAME_LIBXSLT
+ SONAME_LIBXSLT,
+#endif
+#ifdef SONAME_LIBXXF86VM
+ SONAME_LIBXXF86VM,
+#endif
+ NULL
+};
+
+/* return the list of shared libs used by wine */
+const char **wine_get_libs(void)
+{
+ return &wine_libs[0];
+}
+
/* return the full name of the server directory (the one containing the socket) */
const char *wine_get_server_dir(void)
{
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 2a569f5b7..5f10c3f9d 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -1072,6 +1072,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
return ret;
}
+/***********************************************************************
+ * wine_dladdr
+ */
+int wine_dladdr( void *addr, void *info, char *error, size_t errorsize )
+{
+#ifdef HAVE_DLADDR
+ int ret;
+ const char *s;
+ dlerror(); dlerror();
+ ret = dladdr( addr, (Dl_info *)info );
+ s = dlerror();
+ if (error && errorsize)
+ {
+ if (s)
+ {
+ size_t len = strlen(s);
+ if (len >= errorsize) len = errorsize - 1;
+ memcpy( error, s, len );
+ error[len] = 0;
+ }
+ else error[0] = 0;
+ }
+ dlerror();
+ return ret;
+#else
+ if (error)
+ {
+ static const char msg[] = "dladdr interface not detected by configure";
+ size_t len = min( errorsize, sizeof(msg) );
+ memcpy( error, msg, len );
+ error[len - 1] = 0;
+ }
+ return 0;
+#endif
+}
+
/***********************************************************************
* wine_dlsym
*/
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index ca46979f5..22a4e73b0 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -9,6 +9,7 @@ WINE_1.0
wine_anon_mmap;
wine_casemap_lower;
wine_casemap_upper;
+ wine_dladdr;
wine_dlclose;
wine_dll_enum_load_path;
wine_dll_set_callback;
@@ -24,6 +25,7 @@ WINE_1.0
wine_get_es;
wine_get_fs;
wine_get_gs;
+ wine_get_libs;
wine_get_server_dir;
wine_get_ss;
wine_get_user_name;
diff --git a/loader/main.c b/loader/main.c
index f6629128d..a2dc40c51 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -36,6 +36,12 @@
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#ifdef HAVE_DLADDR
+# include <dlfcn.h>
+#endif
+#ifdef HAVE_LINK_H
+# include <link.h>
+#endif
#include <pthread.h>
#include "wine/library.h"
@@ -55,7 +61,8 @@ static void check_command_line( int argc, char *argv[] )
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
" wine --version Output version information and exit\n"
- " wine --patches Output patch information and exit";
+ " wine --patches Output patch information and exit\n"
+ " wine --check-libs Checks if shared libs are installed";
if (argc <= 1)
{
@@ -111,6 +118,47 @@ static void check_command_line( int argc, char *argv[] )
exit(0);
}
+ if (!strcmp( argv[1], "--check-libs" ))
+ {
+ void* lib_handle;
+ int ret = 0;
+ const char **wine_libs = wine_get_libs();
+
+ for(; *wine_libs; wine_libs++)
+ {
+ lib_handle = wine_dlopen( *wine_libs, RTLD_NOW, NULL, 0 );
+ if (lib_handle)
+ {
+ #ifdef HAVE_DLADDR
+ Dl_info libinfo;
+ void* symbol;
+
+ #ifdef HAVE_LINK_H
+ struct link_map *lm = (struct link_map *)lib_handle;
+ symbol = (void *)lm->l_addr;
+ #else
+ symbol = wine_dlsym( lib_handle, "_init", NULL, 0 );
+ #endif
+ if (symbol && wine_dladdr( symbol, &libinfo, NULL, 0 ))
+ {
+ printf( "%s: %s\n", *wine_libs, libinfo.dli_fname );
+ }
+ else
+ #endif
+ {
+ printf( "%s: found\n", *wine_libs );
+ }
+ wine_dlclose( lib_handle, NULL, 0 );
+ }
+ else
+ {
+ printf( "%s: missing\n", *wine_libs );
+ ret = 1;
+ }
+ }
+
+ exit(ret);
+ }
}
--
2.25.0

View File

@@ -1,60 +0,0 @@
From 07ca5e888c3265c57c88ef1758e6c47fbea4fb07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 27 Jun 2015 19:28:51 +0200
Subject: loader: Print library paths for --check-libs on Mac OS X.
---
loader/main.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/loader/main.c b/loader/main.c
index a2dc40c51c..1642fb0965 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -50,6 +50,30 @@
/* the preloader will set this variable */
const struct wine_preload_info *wine_main_preload_info = NULL;
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+
+static const char *get_macho_library_path( const char *libname )
+{
+ unsigned int path_len, libname_len = strlen( libname );
+ uint32_t i, count = _dyld_image_count();
+
+ for (i = 0; i < count; i++)
+ {
+ const char *path = _dyld_get_image_name( i );
+ if (!path) continue;
+
+ path_len = strlen( path );
+ if (path_len < libname_len + 1) continue;
+ if (path[path_len - libname_len - 1] != '/') continue;
+ if (strcmp( path + path_len - libname_len, libname )) continue;
+
+ return path;
+ }
+ return NULL;
+}
+#endif
+
/***********************************************************************
* check_command_line
*
@@ -146,7 +170,11 @@ static void check_command_line( int argc, char *argv[] )
else
#endif
{
- printf( "%s: found\n", *wine_libs );
+ const char *path = NULL;
+ #ifdef __APPLE__
+ path = get_macho_library_path( *wine_libs );
+ #endif
+ printf( "%s: %s\n", *wine_libs, path ? path : "found");
}
wine_dlclose( lib_handle, NULL, 0 );
}
--
2.14.1

View File

@@ -1,4 +1,4 @@
From 8959c13f2be7e2a31f27c8483ee2202692f00710 Mon Sep 17 00:00:00 2001
From 8fe522dadc480b57415a7b63e0752de113851231 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 01:45:29 +0200
Subject: [PATCH] ntdll: Add function to create new tokens for elevation
@@ -14,10 +14,10 @@ Subject: [PATCH] ntdll: Add function to create new tokens for elevation
6 files changed, 117 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index d626e0bf2..5057e2b07 100644
index 853da5c3fcf..33c1355c8b5 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1556,6 +1556,9 @@
@@ -1569,6 +1569,9 @@
# Virtual memory
@ cdecl __wine_locked_recvmsg(long ptr long)
@@ -28,12 +28,12 @@ index d626e0bf2..5057e2b07 100644
@ cdecl wine_get_version() NTDLL_wine_get_version
@ cdecl wine_get_patches() NTDLL_wine_get_patches
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index ac1469412..6c2345c6c 100644
index b62239de5b4..d494dc71263 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -89,6 +89,9 @@ extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
extern NTSTATUS restart_process( RTL_USER_PROCESS_PARAMETERS *params, NTSTATUS status ) DECLSPEC_HIDDEN;
@@ -96,6 +96,9 @@ extern int __wine_main_argc;
extern char **__wine_main_argv;
extern WCHAR **__wine_main_wargv;
+/* token */
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
@@ -42,10 +42,10 @@ index ac1469412..6c2345c6c 100644
extern timeout_t server_start_time DECLSPEC_HIDDEN;
extern unsigned int server_cpus DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 52d7ea429..e24691b8a 100644
index 6d506c85306..9940e6cf7c9 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -125,6 +125,24 @@ HANDLE CDECL __wine_make_process_system(void)
@@ -124,6 +124,24 @@ HANDLE CDECL __wine_make_process_system(void)
return ret;
}
@@ -71,10 +71,10 @@ index 52d7ea429..e24691b8a 100644
#define UNIMPLEMENTED_INFO_CLASS(c) \
diff --git a/server/protocol.def b/server/protocol.def
index e908f2131..0177cb579 100644
index efacadac42b..434cd11baf0 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3734,6 +3734,14 @@ struct handle_info
@@ -3749,6 +3749,14 @@ struct handle_info
@END
@@ -90,7 +90,7 @@ index e908f2131..0177cb579 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/security.h b/server/security.h
index 6c337143c..21e90ccf2 100644
index 6c337143c3d..21e90ccf23f 100644
--- a/server/security.h
+++ b/server/security.h
@@ -49,6 +49,7 @@ extern const PSID security_builtin_users_sid;
@@ -102,10 +102,10 @@ index 6c337143c..21e90ccf2 100644
/* token functions */
diff --git a/server/token.c b/server/token.c
index 381ae6871..fcab79955 100644
index c4f1cd943c2..970ed1838da 100644
--- a/server/token.c
+++ b/server/token.c
@@ -79,6 +79,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
@@ -77,6 +77,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
static const SID authenticated_user_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORITY }, { SECURITY_AUTHENTICATED_USER_RID } };
static const SID local_system_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORITY }, { SECURITY_LOCAL_SYSTEM_RID } };
static const SID high_label_sid = { SID_REVISION, 1, { SECURITY_MANDATORY_LABEL_AUTHORITY }, { SECURITY_MANDATORY_HIGH_RID } };
@@ -113,7 +113,7 @@ index 381ae6871..fcab79955 100644
static const SID_N(5) local_user_sid = { SID_REVISION, 5, { SECURITY_NT_AUTHORITY }, { SECURITY_NT_NON_UNIQUE, 0, 0, 0, 1000 } };
static const SID_N(2) builtin_admins_sid = { SID_REVISION, 2, { SECURITY_NT_AUTHORITY }, { SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS } };
static const SID_N(2) builtin_users_sid = { SID_REVISION, 2, { SECURITY_NT_AUTHORITY }, { SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_USERS } };
@@ -95,6 +96,7 @@ const PSID security_builtin_admins_sid = (PSID)&builtin_admins_sid;
@@ -93,6 +94,7 @@ const PSID security_builtin_admins_sid = (PSID)&builtin_admins_sid;
const PSID security_builtin_users_sid = (PSID)&builtin_users_sid;
const PSID security_domain_users_sid = (PSID)&domain_users_sid;
const PSID security_high_label_sid = (PSID)&high_label_sid;
@@ -121,7 +121,7 @@ index 381ae6871..fcab79955 100644
static luid_t prev_luid_value = { 1000, 0 };
@@ -917,6 +919,64 @@ struct token *token_create_admin( void )
@@ -915,6 +917,64 @@ struct token *token_create_admin( void )
return token;
}
@@ -186,7 +186,7 @@ index 381ae6871..fcab79955 100644
static struct privilege *token_find_privilege( struct token *token, const LUID *luid, int enabled_only )
{
struct privilege *privilege;
@@ -1722,3 +1782,27 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1720,3 +1780,27 @@ DECL_HANDLER(set_token_default_dacl)
release_object( token );
}
}
@@ -215,5 +215,5 @@ index 381ae6871..fcab79955 100644
+ }
+}
--
2.23.0
2.26.0

View File

@@ -1,4 +1,4 @@
From 6a09d34647aa517e45bc0bb20a92d0d94a1da888 Mon Sep 17 00:00:00 2001
From 2f03ded51b6f537ac6a4f3bfb51e1d0998a27c48 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
@@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement process token elevation through manifests.
5 files changed, 67 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 2f203447e..7c5dd308b 100644
index 38c893e3eb4..d32b57612d5 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3804,6 +3804,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -4045,6 +4045,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
}
@@ -48,7 +48,7 @@ index 2f203447e..7c5dd308b 100644
/***********************************************************************
* load_global_options
*/
@@ -4233,6 +4259,7 @@ void __wine_process_init(void)
@@ -4478,6 +4504,7 @@ void __wine_process_init(void)
's','y','s','t','e','m','3','2','\\',
'k','e','r','n','e','l','3','2','.','d','l','l',0};
RTL_USER_PROCESS_PARAMETERS *params;
@@ -56,7 +56,7 @@ index 2f203447e..7c5dd308b 100644
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -4324,6 +4351,16 @@ void __wine_process_init(void)
@@ -4575,6 +4602,16 @@ void __wine_process_init(void)
virtual_set_large_address_space();
@@ -71,10 +71,10 @@ index 2f203447e..7c5dd308b 100644
+ }
+
/* the main exe needs to be the first in the load order list */
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
RemoveEntryList( &wm->ldr.InLoadOrderLinks );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderLinks );
diff --git a/server/process.c b/server/process.c
index 4c7da9223..d6f71a774 100644
index 4c7da9223c1..d6f71a774f3 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1107,6 +1107,14 @@ struct process_snapshot *process_snap( int *count )
@@ -93,7 +93,7 @@ index 4c7da9223..d6f71a774 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index 5b83e111a..dfe5c4e52 100644
index 5b83e111a6f..dfe5c4e52d8 100644
--- a/server/process.h
+++ b/server/process.h
@@ -139,6 +139,7 @@ extern void kill_debugged_processes( struct thread *debugger, int exit_code );
@@ -105,10 +105,10 @@ index 5b83e111a..dfe5c4e52 100644
/* console functions */
extern void inherit_console( struct thread *parent_thread, struct process *parent,
diff --git a/server/protocol.def b/server/protocol.def
index 6022e1715..45ab670ea 100644
index 68c66bc2fcb..55c821ac1e2 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3755,6 +3755,13 @@ struct handle_info
@@ -3762,6 +3762,13 @@ struct handle_info
@END
@@ -123,10 +123,10 @@ index 6022e1715..45ab670ea 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index fcab79955..181219d21 100644
index 970ed1838da..1c1d49989b3 100644
--- a/server/token.c
+++ b/server/token.c
@@ -1806,3 +1806,17 @@ DECL_HANDLER(create_token)
@@ -1804,3 +1804,17 @@ DECL_HANDLER(create_token)
release_object( token );
}
}
@@ -145,5 +145,5 @@ index fcab79955..181219d21 100644
+ }
+}
--
2.24.0
2.26.0

View File

@@ -285,14 +285,14 @@ index 00000000000..d7ed6eeddf3
+
+BOOL gcrypt_initialize(void)
+{
+ if (!(libgcrypt_handle = wine_dlopen( SONAME_LIBGCRYPT, RTLD_NOW, NULL, 0 )))
+ if (!(libgcrypt_handle = dlopen( SONAME_LIBGCRYPT, RTLD_NOW)))
+ {
+ ERR_(winediag)( "failed to load libgcrypt, no support for diffie hellman key exchange\n" );
+ return FALSE;
+ }
+
+#define LOAD_FUNCPTR(f) \
+ if (!(p##f = wine_dlsym( libgcrypt_handle, #f, NULL, 0 ))) \
+ if (!(p##f = dlsym( libgcrypt_handle, #f))) \
+ { \
+ ERR( "failed to load %s\n", #f ); \
+ goto fail; \
@@ -314,7 +314,7 @@ index 00000000000..d7ed6eeddf3
+ return TRUE;
+
+fail:
+ wine_dlclose( libgcrypt_handle, NULL, 0 );
+ dlclose( libgcrypt_handle);
+ libgcrypt_handle = NULL;
+ return FALSE;
+}
@@ -322,7 +322,7 @@ index 00000000000..d7ed6eeddf3
+
+void gcrypt_uninitialize(void)
+{
+ wine_dlclose( libgcrypt_handle, NULL, 0 );
+ dlclose( libgcrypt_handle);
+ libgcrypt_handle = NULL;
+}
+

View File

@@ -1,4 +1,4 @@
From ad23e816eb724d81032306f8ac6d4faa96ccaf4a Mon Sep 17 00:00:00 2001
From c88a1acf9ac625cb2a7cbfc90ac3bb2d426889a0 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 12 Nov 2019 18:13:20 +0800
Subject: [PATCH] comctl32: Bump version to 6.0.
@@ -14,12 +14,12 @@ Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/comctl32.h b/dlls/comctl32/comctl32.h
index 78e97983381..42b434a96d9 100644
index 66b341ae5ad..1af9baea7ee 100644
--- a/dlls/comctl32/comctl32.h
+++ b/dlls/comctl32/comctl32.h
@@ -192,7 +192,7 @@ INT Str_GetPtrAtoW (LPCSTR lpSrc, LPWSTR lpDest, INT nMaxLen) DECLSPEC_HIDDEN;
BOOL Str_SetPtrAtoW (LPWSTR *lppDest, LPCSTR lpSrc) DECLSPEC_HIDDEN;
@@ -193,7 +193,7 @@ BOOL Str_SetPtrAtoW (LPWSTR *lppDest, LPCSTR lpSrc) DECLSPEC_HIDDEN;
BOOL Str_SetPtrWtoA (LPSTR *lppDest, LPCWSTR lpSrc) DECLSPEC_HIDDEN;
BOOL imagelist_has_alpha(HIMAGELIST, UINT) DECLSPEC_HIDDEN;
-#define COMCTL32_VERSION_MINOR 81
+#define COMCTL32_VERSION_MINOR 0
@@ -40,7 +40,7 @@ index c9aa1ba6253..be6e2425193 100644
#define WINE_PRODUCTVERSION_STR WINE_FILEVERSION_STR
diff --git a/include/commctrl.h b/include/commctrl.h
index 700b335fbb7..029a4b45457 100644
index dfd2f4a37d2..0784478ce14 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -51,7 +51,7 @@ enum _LI_METRIC
@@ -50,8 +50,8 @@ index 700b335fbb7..029a4b45457 100644
-#define COMCTL32_VERSION 5 /* dll version */
+#define COMCTL32_VERSION 6 /* dll version */
#ifndef _WIN32_IE
#define _WIN32_IE 0x0400
#define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */
#define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */
--
2.24.1
2.25.1

View File

@@ -1,15 +1,15 @@
From e920f461eaf4c5d19c0cfc8e9c9a40671269dd93 Mon Sep 17 00:00:00 2001
From b17741a716e2633c02c2237eb424f126860a0c39 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 6 Oct 2014 05:06:06 +0200
Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR.
---
dlls/dbghelp/Makefile.in | 2 +-
dlls/dbghelp/elf_module.c | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)
dlls/dbghelp/elf_module.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/dbghelp/Makefile.in b/dlls/dbghelp/Makefile.in
index f08464cd422..aa7a767110b 100644
index 076c50323dd..ddb69c96dd4 100644
--- a/dlls/dbghelp/Makefile.in
+++ b/dlls/dbghelp/Makefile.in
@@ -1,6 +1,6 @@
@@ -18,27 +18,20 @@ index f08464cd422..aa7a767110b 100644
-EXTRADEFS = -D_IMAGEHLP_SOURCE_
+EXTRADEFS = -D_IMAGEHLP_SOURCE_ -DBINDIR="\"${bindir}\""
DELAYIMPORTS = version
EXTRAINCL = $(Z_CFLAGS)
EXTRALIBS = $(Z_LIBS) $(CORESERVICES_LIBS) $(COREFOUNDATION_LIBS)
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 96b16fd5c0c..611533ee098 100644
index ab2a693ecaf..2add1025e39 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -1644,9 +1644,11 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
if (!ret && !strchrW(filename, '/'))
{
ret = elf_load_file_from_path(pcs, filename, load_offset, dyn_addr,
- getenv("PATH"), elf_info) ||
- elf_load_file_from_path(pcs, filename, load_offset, dyn_addr,
- getenv("LD_LIBRARY_PATH"), elf_info);
+ getenv("PATH"), elf_info);
+ if (!ret) ret = elf_load_file_from_path(pcs, filename, load_offset, dyn_addr,
+ getenv("LD_LIBRARY_PATH"), elf_info);
+ if (!ret) ret = elf_load_file_from_path(pcs, filename, load_offset, dyn_addr,
+ BINDIR, elf_info);
if (!ret) ret = elf_load_file_from_dll_path(pcs, filename,
load_offset, dyn_addr, elf_info);
@@ -1436,6 +1436,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
load_elf.elf_info = elf_info;
ret = search_unix_path(filename, getenv("LD_LIBRARY_PATH"), elf_load_file_cb, &load_elf)
+ || search_unix_path(filename, BINDIR, elf_load_file_cb, &load_elf)
|| search_dll_path(pcs, filename, elf_load_file_cb, &load_elf);
}
--
2.20.1
2.26.0

View File

@@ -1,4 +1,4 @@
From da87296baa62ed82f5334236ef9b259aac818e5d Mon Sep 17 00:00:00 2001
From 2097fbe83a66a3a423bdd148ecfc4f16c1237110 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 29 Jul 2015 17:09:50 +0200
Subject: [PATCH] ddraw: Create rendering targets in video memory if possible.
@@ -12,10 +12,10 @@ Based on a patch by Henri Verbeet.
4 files changed, 56 insertions(+), 15 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 535f33f1c7d..00fd337ead4 100644
index 050f625f7..9655f9e47 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -4298,7 +4298,7 @@ static HRESULT WINAPI d3d7_CreateDevice(IDirect3D7 *iface, REFCLSID riid,
@@ -4214,7 +4214,7 @@ static HRESULT WINAPI d3d7_CreateDevice(IDirect3D7 *iface, REFCLSID riid,
TRACE("iface %p, riid %s, surface %p, device %p.\n", iface, debugstr_guid(riid), surface, device);
wined3d_mutex_lock();
@@ -24,7 +24,7 @@ index 535f33f1c7d..00fd337ead4 100644
{
*device = &object->IDirect3DDevice7_iface;
}
@@ -4327,7 +4327,7 @@ static HRESULT WINAPI d3d3_CreateDevice(IDirect3D3 *iface, REFCLSID riid,
@@ -4243,7 +4243,7 @@ static HRESULT WINAPI d3d3_CreateDevice(IDirect3D3 *iface, REFCLSID riid,
return CLASS_E_NOAGGREGATION;
wined3d_mutex_lock();
@@ -33,7 +33,7 @@ index 535f33f1c7d..00fd337ead4 100644
{
*device = &device_impl->IDirect3DDevice3_iface;
}
@@ -4353,7 +4353,7 @@ static HRESULT WINAPI d3d2_CreateDevice(IDirect3D2 *iface, REFCLSID riid,
@@ -4269,7 +4269,7 @@ static HRESULT WINAPI d3d2_CreateDevice(IDirect3D2 *iface, REFCLSID riid,
iface, debugstr_guid(riid), surface, device);
wined3d_mutex_lock();
@@ -43,10 +43,10 @@ index 535f33f1c7d..00fd337ead4 100644
*device = &device_impl->IDirect3DDevice2_iface;
}
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 42a7a85e4ec..1a7e48fdffa 100644
index f4fe970a6..ba0ec73d8 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -310,6 +310,7 @@ struct d3d_device
@@ -313,6 +313,7 @@ struct d3d_device
IUnknown IUnknown_inner;
LONG ref;
UINT version;
@@ -54,8 +54,8 @@ index 42a7a85e4ec..1a7e48fdffa 100644
IUnknown *outer_unknown;
struct wined3d_device *wined3d_device;
@@ -356,7 +357,7 @@ struct d3d_device
struct wined3d_stateblock *recording, *state, *update_state;
@@ -360,7 +361,7 @@ struct d3d_device
const struct wined3d_stateblock_state *stateblock_state;
};
-HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUnknown *rt_iface,
@@ -64,10 +64,10 @@ index 42a7a85e4ec..1a7e48fdffa 100644
enum wined3d_depth_buffer_type d3d_device_update_depth_stencil(struct d3d_device *device) DECLSPEC_HIDDEN;
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 7acc8e0db0b..390d9a9040d 100644
index 048ba7fba..ce74a0fb8 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -1856,7 +1856,7 @@ static HRESULT d3d_device7_SetRenderTarget(IDirect3DDevice7 *iface,
@@ -1858,7 +1858,7 @@ static HRESULT d3d_device7_SetRenderTarget(IDirect3DDevice7 *iface,
return DDERR_INVALIDCAPS;
}
@@ -76,7 +76,7 @@ index 7acc8e0db0b..390d9a9040d 100644
{
WARN("Surface %p is not in video memory.\n", target_impl);
wined3d_mutex_unlock();
@@ -1932,7 +1932,7 @@ static HRESULT WINAPI d3d_device3_SetRenderTarget(IDirect3DDevice3 *iface,
@@ -1934,7 +1934,7 @@ static HRESULT WINAPI d3d_device3_SetRenderTarget(IDirect3DDevice3 *iface,
return DDERR_INVALIDPIXELFORMAT;
}
@@ -85,7 +85,7 @@ index 7acc8e0db0b..390d9a9040d 100644
{
WARN("Surface %p is not in video memory.\n", target_impl);
IDirectDrawSurface4_AddRef(target);
@@ -1981,7 +1981,7 @@ static HRESULT WINAPI d3d_device2_SetRenderTarget(IDirect3DDevice2 *iface,
@@ -1983,7 +1983,7 @@ static HRESULT WINAPI d3d_device2_SetRenderTarget(IDirect3DDevice2 *iface,
return DDERR_INVALIDPIXELFORMAT;
}
@@ -94,7 +94,7 @@ index 7acc8e0db0b..390d9a9040d 100644
{
WARN("Surface %p is not in video memory.\n", target_impl);
IDirectDrawSurface_AddRef(target);
@@ -6956,7 +6956,7 @@ static void ddraw_reset_viewport_state(struct ddraw *ddraw)
@@ -6951,7 +6951,7 @@ static void ddraw_reset_viewport_state(struct ddraw *ddraw)
wined3d_stateblock_set_scissor_rect(ddraw->state, &rect);
}
@@ -103,7 +103,7 @@ index 7acc8e0db0b..390d9a9040d 100644
struct ddraw_surface *target, IUnknown *rt_iface, UINT version, IUnknown *outer_unknown)
{
static const struct wined3d_matrix ident =
@@ -6979,6 +6979,7 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
@@ -6974,6 +6974,7 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
device->IUnknown_inner.lpVtbl = &d3d_device_inner_vtbl;
device->ref = 1;
device->version = version;
@@ -111,7 +111,7 @@ index 7acc8e0db0b..390d9a9040d 100644
if (outer_unknown)
device->outer_unknown = outer_unknown;
@@ -7036,14 +7037,18 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
@@ -7032,14 +7033,18 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
return D3D_OK;
}
@@ -133,7 +133,7 @@ index 7acc8e0db0b..390d9a9040d 100644
if (!(target->surface_desc.ddsCaps.dwCaps & DDSCAPS_3DDEVICE)
|| (target->surface_desc.ddsCaps.dwCaps & DDSCAPS_ZBUFFER))
@@ -7066,7 +7071,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
@@ -7062,7 +7067,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
return DDERR_OUTOFMEMORY;
}
@@ -142,7 +142,7 @@ index 7acc8e0db0b..390d9a9040d 100644
{
WARN("Surface %p is not in video memory.\n", target);
return D3DERR_SURFACENOTINVIDMEM;
@@ -7084,7 +7089,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
@@ -7080,7 +7085,7 @@ HRESULT d3d_device_create(struct ddraw *ddraw, struct ddraw_surface *target, IUn
return DDERR_OUTOFMEMORY;
}
@@ -152,7 +152,7 @@ index 7acc8e0db0b..390d9a9040d 100644
WARN("Failed to initialize device, hr %#x.\n", hr);
heap_free(object);
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index da8913c521c..8b40e7de4b8 100644
index 85c1ef496..01522f515 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -223,7 +223,7 @@ static HRESULT WINAPI ddraw_surface7_QueryInterface(IDirectDrawSurface7 *iface,
@@ -164,7 +164,7 @@ index da8913c521c..8b40e7de4b8 100644
1, &This->device1, (IUnknown *)&This->IDirectDrawSurface_iface)))
{
This->device1 = NULL;
@@ -6201,7 +6201,42 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
@@ -6192,7 +6192,42 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
if (desc->ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY)
{
@@ -196,7 +196,7 @@ index da8913c521c..8b40e7de4b8 100644
+ * possible.
+ */
+ if (bind_flags
+ && SUCCEEDED(hr = wined3d_check_device_format(ddraw->wined3d, WINED3DADAPTER_DEFAULT,
+ && SUCCEEDED(hr = wined3d_check_device_format(ddraw->wined3d, ddraw->wined3d_adapter,
+ WINED3D_DEVICE_TYPE_HAL, mode.format_id, 0,
+ bind_flags, WINED3D_RTYPE_TEXTURE_2D, wined3d_desc.format)))
+ {
@@ -209,5 +209,5 @@ index da8913c521c..8b40e7de4b8 100644
}
else
--
2.25.0
2.25.1

View File

@@ -1,4 +1,4 @@
From 95a95d09125707b24f8728c545c7f5b706bafe1c Mon Sep 17 00:00:00 2001
From a667953fb14e6061418e42e77a2bf494121cc2b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 22 Feb 2015 01:25:20 +0100
Subject: [PATCH] dxva2: Initial implementation of MPEG2 decoder using vaapi
@@ -22,19 +22,19 @@ Subject: [PATCH] dxva2: Initial implementation of MPEG2 decoder using vaapi
create mode 100644 dlls/dxva2/vaapi.c
diff --git a/configure.ac b/configure.ac
index 39cef46e7..bb89c7ee0 100644
index 3766908bd62..13584352f3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -111,6 +111,8 @@ AC_ARG_WITH(xslt, AS_HELP_STRING([--without-xslt],[do not use XSLT]))
@@ -112,6 +112,8 @@ AC_ARG_WITH(xshm, AS_HELP_STRING([--without-xshm],[do not use XShm (shared
AC_ARG_WITH(xslt, AS_HELP_STRING([--without-xslt],[do not use XSLT]))
AC_ARG_WITH(xxf86vm, AS_HELP_STRING([--without-xxf86vm],[do not use XFree video mode extension]),
[if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_xf86vmode_h=no; ac_cv_header_X11_extensions_xf86vmproto_h=no; fi])
AC_ARG_WITH(zlib, AS_HELP_STRING([--without-zlib],[do not use Zlib (data compression)]))
+AC_ARG_WITH(va, AS_HELP_STRING([--without-va],[do not use VA (GPU video acceleration)]),
+ [if test "x$withval" = "xno"; then ac_cv_header_va_va_x11_h=no; fi])
AC_ARG_WITH(wine-tools,AS_HELP_STRING([--with-wine-tools=DIR],[use Wine tools from directory DIR]))
AC_ARG_WITH(wine64, AS_HELP_STRING([--with-wine64=DIR],[use the 64-bit Wine in DIR for a Wow64 build]))
@@ -1296,6 +1298,20 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
@@ -1319,6 +1321,20 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
WINE_WARNING_WITH(opengl,[test -n "$opengl_msg"],[$opengl_msg
OpenGL and Direct3D won't be supported.])
@@ -56,7 +56,7 @@ index 39cef46e7..bb89c7ee0 100644
else
X_CFLAGS=""
diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in
index e4c90b523..b42cfae52 100644
index e4c90b5231e..b42cfae525e 100644
--- a/dlls/dxva2/Makefile.in
+++ b/dlls/dxva2/Makefile.in
@@ -1,10 +1,16 @@
@@ -81,7 +81,7 @@ index e4c90b523..b42cfae52 100644
+ videoservices.c
diff --git a/dlls/dxva2/backend.idl b/dlls/dxva2/backend.idl
new file mode 100644
index 000000000..8d488351f
index 00000000000..8d488351ff2
--- /dev/null
+++ b/dlls/dxva2/backend.idl
@@ -0,0 +1,96 @@
@@ -182,7 +182,7 @@ index 000000000..8d488351f
+ [out] IWineVideoDecoder **decoder);
+}
diff --git a/dlls/dxva2/dxva2_private.h b/dlls/dxva2/dxva2_private.h
index f0068b688..f51863739 100644
index f0068b68891..f51863739b0 100644
--- a/dlls/dxva2/dxva2_private.h
+++ b/dlls/dxva2/dxva2_private.h
@@ -1,5 +1,5 @@
@@ -317,7 +317,7 @@ index f0068b688..f51863739 100644
+#endif /* HAVE_VAAPI */
diff --git a/dlls/dxva2/genericdecoder.c b/dlls/dxva2/genericdecoder.c
new file mode 100644
index 000000000..3903d6b0b
index 00000000000..3903d6b0b46
--- /dev/null
+++ b/dlls/dxva2/genericdecoder.c
@@ -0,0 +1,432 @@
@@ -754,7 +754,7 @@ index 000000000..3903d6b0b
+ return S_OK;
+}
diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
index 0382b5fb0..3006f175b 100644
index 0382b5fb00a..3006f175b7f 100644
--- a/dlls/dxva2/main.c
+++ b/dlls/dxva2/main.c
@@ -32,6 +32,8 @@
@@ -848,7 +848,7 @@ index 0382b5fb0..3006f175b 100644
return TRUE;
diff --git a/dlls/dxva2/tests/dxva2.c b/dlls/dxva2/tests/dxva2.c
index dcbb990ee..c28be4d8e 100644
index dcbb990ee5c..c28be4d8e3c 100644
--- a/dlls/dxva2/tests/dxva2.c
+++ b/dlls/dxva2/tests/dxva2.c
@@ -1,7 +1,7 @@
@@ -929,7 +929,7 @@ index dcbb990ee..c28be4d8e 100644
IDirectXVideoDecoderService_Release(service);
diff --git a/dlls/dxva2/vaapi-mpeg2.c b/dlls/dxva2/vaapi-mpeg2.c
new file mode 100644
index 000000000..7b7f61db7
index 00000000000..7b7f61db755
--- /dev/null
+++ b/dlls/dxva2/vaapi-mpeg2.c
@@ -0,0 +1,753 @@
@@ -1688,7 +1688,7 @@ index 000000000..7b7f61db7
+#endif /* HAVE_VAAPI */
diff --git a/dlls/dxva2/vaapi.c b/dlls/dxva2/vaapi.c
new file mode 100644
index 000000000..e2a64065e
index 00000000000..e2a64065e16
--- /dev/null
+++ b/dlls/dxva2/vaapi.c
@@ -0,0 +1,767 @@
@@ -1764,7 +1764,7 @@ index 000000000..e2a64065e
+#undef MAKE_FUNCPTR
+
+#define LOAD_FUNCPTR(f) \
+ if(!(p##f = wine_dlsym(handle, #f, NULL, 0))) \
+ if(!(p##f = dlsym(handle, #f))) \
+ { \
+ WARN("Can't find symbol %s.\n", #f); \
+ goto error; \
@@ -1772,7 +1772,7 @@ index 000000000..e2a64065e
+
+static void *load_libva( void )
+{
+ void *handle = wine_dlopen(SONAME_LIBVA, RTLD_NOW, NULL, 0);
+ void *handle = dlopen(SONAME_LIBVA, RTLD_NOW);
+ if (!handle)
+ {
+ FIXME("Wine cannot find the %s library.\n", SONAME_LIBVA);
@@ -1808,13 +1808,13 @@ index 000000000..e2a64065e
+ return handle;
+
+error:
+ wine_dlclose(handle, NULL, 0);
+ dlclose(handle);
+ return NULL;
+}
+
+static void *load_libva_x11( void )
+{
+ void *handle = wine_dlopen(SONAME_LIBVA_X11, RTLD_NOW, NULL, 0);
+ void *handle = dlopen(SONAME_LIBVA_X11, RTLD_NOW);
+ if (!handle)
+ {
+ FIXME("Wine cannot find the %s library.\n", SONAME_LIBVA_X11);
@@ -1825,13 +1825,13 @@ index 000000000..e2a64065e
+ return handle;
+
+error:
+ wine_dlclose(handle, NULL, 0);
+ dlclose(handle);
+ return NULL;
+}
+
+static void *load_libx11( void )
+{
+ void *handle = wine_dlopen(SONAME_LIBX11, RTLD_NOW, NULL, 0);
+ void *handle = dlopen(SONAME_LIBX11, RTLD_NOW);
+ if (!handle)
+ {
+ FIXME("Wine cannot find the %s library.\n", SONAME_LIBX11);
@@ -1843,7 +1843,7 @@ index 000000000..e2a64065e
+ return handle;
+
+error:
+ wine_dlclose(handle, NULL, 0);
+ dlclose(handle);
+ return NULL;
+}
+
@@ -2176,9 +2176,9 @@ index 000000000..e2a64065e
+
+ pXCloseDisplay(This->x11_display);
+
+ wine_dlclose(This->x11_handle, NULL, 0);
+ wine_dlclose(This->va_x11_handle, NULL, 0);
+ wine_dlclose(This->va_handle, NULL, 0);
+ dlclose(This->x11_handle);
+ dlclose(This->va_x11_handle);
+ dlclose(This->va_handle);
+
+ CoTaskMemFree(This);
+ }
@@ -2440,11 +2440,11 @@ index 000000000..e2a64065e
+ if (videoservice->x11_display)
+ pXCloseDisplay(videoservice->x11_display);
+ if (videoservice->x11_handle)
+ wine_dlclose(videoservice->x11_handle, NULL, 0);
+ dlclose(videoservice->x11_handle);
+ if (videoservice->va_x11_handle)
+ wine_dlclose(videoservice->va_x11_handle, NULL, 0);
+ dlclose(videoservice->va_x11_handle);
+ if (videoservice->va_handle)
+ wine_dlclose(videoservice->va_handle, NULL, 0);
+ dlclose(videoservice->va_handle);
+
+ CoTaskMemFree(videoservice);
+ return NULL;
@@ -2460,7 +2460,7 @@ index 000000000..e2a64065e
+
+#endif /* HAVE_VAAPI */
diff --git a/dlls/dxva2/videoservices.c b/dlls/dxva2/videoservices.c
index 11cba1441..84222dce5 100644
index 11cba14417a..84222dce558 100644
--- a/dlls/dxva2/videoservices.c
+++ b/dlls/dxva2/videoservices.c
@@ -1,5 +1,5 @@
@@ -2637,5 +2637,5 @@ index 11cba1441..84222dce5 100644
return E_NOINTERFACE;
}
--
2.25.0
2.25.1

View File

@@ -1,4 +1,4 @@
From 84b8c115d10082aff224d56bebc3fbd63c0b6377 Mon Sep 17 00:00:00 2001
From 8f9f3999c7b8cbd610fa0e91d1ffeb9a59f687c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 4 Mar 2015 03:57:29 +0100
Subject: [PATCH] dxva2: Add DRM mode for vaapi.
@@ -11,10 +11,10 @@ Subject: [PATCH] dxva2: Add DRM mode for vaapi.
4 files changed, 91 insertions(+), 22 deletions(-)
diff --git a/configure.ac b/configure.ac
index 2d60234b02..7a93b20ca6 100644
index 13584352f3e..06df84aa378 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1297,17 +1297,18 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
@@ -1322,17 +1322,18 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
OpenGL and Direct3D won't be supported.])
dnl **** Check for libva ****
@@ -38,7 +38,7 @@ index 2d60234b02..7a93b20ca6 100644
CPPFLAGS="$ac_save_CPPFLAGS"
diff --git a/dlls/dxva2/dxva2_private.h b/dlls/dxva2/dxva2_private.h
index 5df59bd3f0..14ac586240 100644
index 5df59bd3f03..b1d2dd9b92d 100644
--- a/dlls/dxva2/dxva2_private.h
+++ b/dlls/dxva2/dxva2_private.h
@@ -22,6 +22,7 @@
@@ -74,7 +74,7 @@ index 5df59bd3f0..14ac586240 100644
static inline WineVideoServiceImpl *impl_from_IWineVideoService( IWineVideoService *iface )
diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
index 3006f175b7..9da3995f78 100644
index 3006f175b7f..9da3995f788 100644
--- a/dlls/dxva2/main.c
+++ b/dlls/dxva2/main.c
@@ -33,6 +33,8 @@
@@ -100,7 +100,7 @@ index 3006f175b7..9da3995f78 100644
if (appkey) RegCloseKey(appkey);
}
diff --git a/dlls/dxva2/vaapi.c b/dlls/dxva2/vaapi.c
index 4c570f5b94..1b19684053 100644
index ef5fb5d26a6..8be65df82f7 100644
--- a/dlls/dxva2/vaapi.c
+++ b/dlls/dxva2/vaapi.c
@@ -55,6 +55,7 @@ MAKE_FUNCPTR(vaEndPicture);
@@ -117,7 +117,7 @@ index 4c570f5b94..1b19684053 100644
+static void *load_libva_drm( void )
+{
+ void *handle = wine_dlopen(SONAME_LIBVA_DRM, RTLD_NOW, NULL, 0);
+ void *handle = dlopen(SONAME_LIBVA_DRM, RTLD_NOW);
+ if (!handle)
+ {
+ FIXME("Wine cannot find the %s library.\n", SONAME_LIBVA_DRM);
@@ -128,34 +128,34 @@ index 4c570f5b94..1b19684053 100644
+ return handle;
+
+error:
+ wine_dlclose(handle, NULL, 0);
+ dlclose(handle);
+ return NULL;
+}
+
static void *load_libx11( void )
{
void *handle = wine_dlopen(SONAME_LIBX11, RTLD_NOW, NULL, 0);
void *handle = dlopen(SONAME_LIBX11, RTLD_NOW);
@@ -480,11 +498,18 @@ static ULONG WINAPI WineVideoService_Release( IWineVideoService *iface )
pvaTerminate(This->va_display);
vaapi_unlock();
- pXCloseDisplay(This->x11_display);
-
- wine_dlclose(This->x11_handle, NULL, 0);
- wine_dlclose(This->va_x11_handle, NULL, 0);
- wine_dlclose(This->va_handle, NULL, 0);
- dlclose(This->x11_handle);
- dlclose(This->va_x11_handle);
- dlclose(This->va_handle);
+ if (This->x11_display)
+ pXCloseDisplay(This->x11_display);
+ if (This->x11_handle)
+ wine_dlclose(This->x11_handle, NULL, 0);
+ dlclose(This->x11_handle);
+ if (This->drm_fd > 0)
+ close(This->drm_fd);
+ if (This->va_drm_handle)
+ wine_dlclose(This->va_drm_handle, NULL, 0);
+ dlclose(This->va_drm_handle);
+ if (This->va_x11_handle)
+ wine_dlclose(This->va_x11_handle, NULL, 0);
+ dlclose(This->va_x11_handle);
+ if (This->va_handle)
+ wine_dlclose(This->va_handle, NULL, 0);
+ dlclose(This->va_handle);
CoTaskMemFree(This);
}
@@ -231,14 +231,14 @@ index 4c570f5b94..1b19684053 100644
@@ -749,6 +800,10 @@ err:
pXCloseDisplay(videoservice->x11_display);
if (videoservice->x11_handle)
wine_dlclose(videoservice->x11_handle, NULL, 0);
dlclose(videoservice->x11_handle);
+ if (videoservice->drm_fd > 0)
+ close(videoservice->drm_fd);
+ if (videoservice->va_drm_handle)
+ wine_dlclose(videoservice->va_drm_handle, NULL, 0);
+ dlclose(videoservice->va_drm_handle);
if (videoservice->va_x11_handle)
wine_dlclose(videoservice->va_x11_handle, NULL, 0);
dlclose(videoservice->va_x11_handle);
if (videoservice->va_handle)
--
2.17.1
2.25.1

View File

@@ -1,4 +1,4 @@
From 3c98dd79ccad72249122925b6b748c6ec84db003 Mon Sep 17 00:00:00 2001
From e0719eabba7a7c187767441b361acedd50766234 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Wed, 13 Jun 2018 10:44:49 -0500
Subject: [PATCH] configure: Check for sys/eventfd.h, ppoll(), and shm_open().
@@ -11,18 +11,18 @@ Although perhaps we shouldn't since the server doesn't do this.
1 file changed, 12 insertions(+)
diff --git a/configure.ac b/configure.ac
index 4f1c925bf95..662d510317a 100644
index da5f24aba5f..6c2653c4c82 100644
--- a/configure.ac
+++ b/configure.ac
@@ -511,6 +511,7 @@ AC_CHECK_HEADERS(\
sys/elf32.h \
@@ -509,6 +509,7 @@ AC_CHECK_HEADERS(\
sys/cdio.h \
sys/epoll.h \
sys/event.h \
+ sys/eventfd.h \
sys/exec_elf.h \
sys/filio.h \
sys/ioctl.h \
@@ -2130,6 +2131,7 @@ AC_CHECK_FUNCS(\
sys/ipc.h \
@@ -2191,6 +2192,7 @@ AC_CHECK_FUNCS(\
pipe2 \
poll \
port_create \
@@ -30,7 +30,7 @@ index 4f1c925bf95..662d510317a 100644
prctl \
pread \
proc_pidinfo \
@@ -2204,6 +2206,16 @@ case $host_os in
@@ -2265,6 +2267,16 @@ case $host_os in
;;
esac
@@ -48,5 +48,5 @@ index 4f1c925bf95..662d510317a 100644
if test "x$with_ldap" != "xno"
then
--
2.20.1
2.25.1

View File

@@ -1,7 +1,7 @@
From d101cc56af09470319046d570891e861d0a6154a Mon Sep 17 00:00:00 2001
From 2aba7f5090f92b609f6d2763603dbeb761f9c65a Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Thu, 7 Jun 2018 21:07:51 -0500
Subject: [PATCH 06/83] ntdll: Close esync objects.
Subject: [PATCH] ntdll: Close esync objects.
---
dlls/ntdll/esync.c | 19 +++++++++++++++++++
@@ -10,7 +10,7 @@ Subject: [PATCH 06/83] ntdll: Close esync objects.
3 files changed, 24 insertions(+)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index bca95b9b2..f7a427425 100644
index bca95b9b2d9..f7a427425b7 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -136,6 +136,25 @@ static void *esync_get_object( HANDLE handle )
@@ -40,7 +40,7 @@ index bca95b9b2..f7a427425 100644
static NTSTATUS create_esync(int *fd, HANDLE *handle, ACCESS_MASK access,
const OBJECT_ATTRIBUTES *attr, int initval, int flags)
diff --git a/dlls/ntdll/esync.h b/dlls/ntdll/esync.h
index fec0b68e8..a22618de8 100644
index fec0b68e8d5..a22618de849 100644
--- a/dlls/ntdll/esync.h
+++ b/dlls/ntdll/esync.h
@@ -19,6 +19,7 @@
@@ -52,7 +52,7 @@ index fec0b68e8..a22618de8 100644
extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access,
const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/om.c b/dlls/ntdll/om.c
index b9fe302b1..ef2cb8b94 100644
index f8f0760de70..b8d73a982b2 100644
--- a/dlls/ntdll/om.c
+++ b/dlls/ntdll/om.c
@@ -34,6 +34,7 @@
@@ -62,8 +62,8 @@ index b9fe302b1..ef2cb8b94 100644
+#include "esync.h"
#include "wine/server.h"
#include "wine/exception.h"
#include "wine/unicode.h"
@@ -446,6 +447,9 @@ NTSTATUS close_handle( HANDLE handle )
@@ -387,6 +388,9 @@ NTSTATUS close_handle( HANDLE handle )
NTSTATUS ret;
int fd = server_remove_fd_from_cache( handle );
@@ -74,5 +74,5 @@ index b9fe302b1..ef2cb8b94 100644
{
req->handle = wine_server_obj_handle( handle );
--
2.20.1
2.26.0

View File

@@ -1,4 +1,4 @@
From 08285be7bf233a38a95b0902c6bac9b24e1fe34f Mon Sep 17 00:00:00 2001
From 5209675d0aac52f20b5af95ef39f85f000b79434 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 8 Jun 2018 22:04:29 -0500
Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
@@ -9,7 +9,7 @@ Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/server/thread.c b/server/thread.c
index f5bf4a8d2..b3da4a2f4 100644
index dd94522a2b9..5c52cca0923 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -133,6 +133,7 @@ static const struct object_ops thread_apc_ops =
@@ -29,15 +29,15 @@ index f5bf4a8d2..b3da4a2f4 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -186,6 +187,7 @@ static inline void init_thread_structure( struct thread *thread )
thread->suspend_context = NULL;
@@ -185,6 +186,7 @@ static inline void init_thread_structure( struct thread *thread )
thread->context = NULL;
thread->teb = 0;
thread->entry_point = 0;
+ thread->esync_fd = -1;
thread->debug_ctx = NULL;
thread->system_regs = 0;
thread->queue = NULL;
@@ -292,6 +294,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
@@ -293,6 +295,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
return NULL;
}
@@ -47,7 +47,7 @@ index f5bf4a8d2..b3da4a2f4 100644
set_fd_events( thread->request_fd, POLLIN ); /* start listening to events */
add_process_thread( thread->process, thread );
return thread;
@@ -370,6 +375,9 @@ static void destroy_thread( struct object *obj )
@@ -373,6 +378,9 @@ static void destroy_thread( struct object *obj )
if (thread->exit_poll) remove_timeout_user( thread->exit_poll );
if (thread->id) free_ptid( thread->id );
if (thread->token) release_object( thread->token );
@@ -57,7 +57,7 @@ index f5bf4a8d2..b3da4a2f4 100644
}
/* dump a thread on stdout for debugging purposes */
@@ -395,6 +403,12 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
@@ -398,6 +406,12 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
return mythread->state == TERMINATED && !mythread->exit_poll;
}
@@ -71,7 +71,7 @@ index f5bf4a8d2..b3da4a2f4 100644
{
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | THREAD_QUERY_INFORMATION | THREAD_GET_CONTEXT;
diff --git a/server/thread.h b/server/thread.h
index 382b10b5b..dd06333fd 100644
index 8029d65df44..21b303aa20a 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -54,6 +54,7 @@ struct thread
@@ -83,5 +83,5 @@ index 382b10b5b..dd06333fd 100644
unsigned int system_regs; /* which system regs have been set */
struct msg_queue *queue; /* message queue */
--
2.22.0
2.26.0

View File

@@ -1,7 +1,7 @@
From 034af084be3e4867cdf1243148ce5c6be80703ec Mon Sep 17 00:00:00 2001
From 6c3029fe763d6c94016a038d016eb810ad8e38ef Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 15 Jun 2018 11:01:44 -0500
Subject: [PATCH 40/83] server: Create eventfd descriptors for timers.
Subject: [PATCH] server: Create eventfd descriptors for timers.
---
dlls/ntdll/esync.c | 1 +
@@ -10,7 +10,7 @@ Subject: [PATCH 40/83] server: Create eventfd descriptors for timers.
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index 4adf01a11..9d9d767c4 100644
index 17890f9e1f0..c1d8882d817 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -241,6 +241,7 @@ static NTSTATUS get_waitable_object( HANDLE handle, struct esync **obj )
@@ -22,10 +22,10 @@ index 4adf01a11..9d9d767c4 100644
case ESYNC_QUEUE:
esync = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*esync) );
diff --git a/server/protocol.def b/server/protocol.def
index 7dbd0a6db..d14fdb607 100644
index 0ab32aaca64..eb80c81d6e6 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4079,6 +4079,7 @@ enum esync_type
@@ -4080,6 +4080,7 @@ enum esync_type
ESYNC_AUTO_EVENT,
ESYNC_MANUAL_EVENT,
ESYNC_MUTEX,
@@ -34,7 +34,7 @@ index 7dbd0a6db..d14fdb607 100644
ESYNC_QUEUE,
};
diff --git a/server/timer.c b/server/timer.c
index 109aa0ff9..e0760ba11 100644
index 2614e145c40..c3ebd3f52d3 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -36,6 +36,7 @@
@@ -78,7 +78,7 @@ index 109aa0ff9..e0760ba11 100644
}
}
return timer;
@@ -171,6 +177,9 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period
@@ -172,6 +178,9 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period
{
period = 0; /* period doesn't make any sense for a manual timer */
timer->signaled = 0;
@@ -86,9 +86,9 @@ index 109aa0ff9..e0760ba11 100644
+ if (do_esync())
+ esync_clear( timer->esync_fd );
}
timer->when = (expire <= 0) ? current_time - expire : max( expire, current_time );
timer->when = (expire <= 0) ? expire - monotonic_time : max( expire, current_time );
timer->period = period;
@@ -202,6 +211,13 @@ static int timer_signaled( struct object *obj, struct wait_queue_entry *entry )
@@ -205,6 +214,13 @@ static int timer_signaled( struct object *obj, struct wait_queue_entry *entry )
return timer->signaled;
}
@@ -103,5 +103,5 @@ index 109aa0ff9..e0760ba11 100644
{
struct timer *timer = (struct timer *)obj;
--
2.20.1
2.26.0

View File

@@ -1,4 +1,4 @@
From 31b8b93cd83da65ee4439f0f06fb673257f1850c Mon Sep 17 00:00:00 2001
From 525b78c2da9801372ef32849871859ad4cd16db0 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sun, 10 Jun 2018 23:12:16 -0500
Subject: [PATCH] server: Allocate shared memory segments for semaphores and
@@ -23,7 +23,7 @@ init_server_dir()).
4 files changed, 71 insertions(+)
diff --git a/server/esync.c b/server/esync.c
index 5dd38c42a..fb9d02fc7 100644
index 5dd38c42a4f..fb9d02fc7d2 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -21,12 +21,20 @@
@@ -137,7 +137,7 @@ index 5dd38c42a..fb9d02fc7 100644
send_client_fd( current->process, esync->fd, reply->handle );
release_object( esync );
diff --git a/server/esync.h b/server/esync.h
index 2687c72e4..aeb58c546 100644
index 2687c72e419..aeb58c5469c 100644
--- a/server/esync.h
+++ b/server/esync.h
@@ -19,6 +19,7 @@
@@ -149,7 +149,7 @@ index 2687c72e4..aeb58c546 100644
void esync_wake_up( struct object *obj );
void esync_clear( int fd );
diff --git a/server/main.c b/server/main.c
index 57463aecc..2f4b3411b 100644
index 483a0c85580..ef4d3d7d835 100644
--- a/server/main.c
+++ b/server/main.c
@@ -36,6 +36,7 @@
@@ -160,7 +160,7 @@ index 57463aecc..2f4b3411b 100644
/* command-line options */
int debug_level = 0;
@@ -141,6 +142,9 @@ int main( int argc, char *argv[] )
@@ -140,6 +141,9 @@ int main( int argc, char *argv[] )
sock_init();
open_master_socket();
@@ -168,13 +168,13 @@ index 57463aecc..2f4b3411b 100644
+ esync_init();
+
if (debug_level) fprintf( stderr, "wineserver: starting (pid=%ld)\n", (long) getpid() );
set_current_time();
init_scheduler();
init_signals();
diff --git a/server/protocol.def b/server/protocol.def
index f0dc0d24d..88a443de4 100644
index eb80c81d6e6..dde81a3ebcf 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4040,6 +4040,7 @@ struct handle_info
@@ -4053,6 +4053,7 @@ struct handle_info
@REPLY
obj_handle_t handle; /* handle to the object */
int type; /* type of esync object (see below) */
@@ -182,7 +182,7 @@ index f0dc0d24d..88a443de4 100644
@END
/* Open an esync object */
@@ -4052,6 +4053,7 @@ struct handle_info
@@ -4065,6 +4066,7 @@ struct handle_info
@REPLY
obj_handle_t handle; /* handle to the event */
int type; /* type of esync object (above) */
@@ -191,5 +191,5 @@ index f0dc0d24d..88a443de4 100644
/* Retrieve the esync fd for an object. */
--
2.23.0
2.26.0

View File

@@ -1,4 +1,4 @@
From f55b5ebadbc078201d81f5f53ad248be58bfac13 Mon Sep 17 00:00:00 2001
From 454430de5505b16af9d90ee99d5fa8a034853d2b Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 15 Jun 2018 14:12:22 -0500
Subject: [PATCH] server, ntdll: Implement alertable waits.
@@ -16,7 +16,7 @@ We do this quite simply by waiting on an extra eventfd descriptor, which the ser
8 files changed, 121 insertions(+), 17 deletions(-)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index 119a36f36..8a41f6961 100644
index 119a36f3611..5db7adcace7 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -684,19 +684,43 @@ static int do_poll( struct pollfd *fds, nfds_t nfds, ULONGLONG *end )
@@ -184,8 +184,8 @@ index 119a36f36..8a41f6961 100644
+ TRACE("Woken up by user APC.\n");
+
+ /* We have to make a server call anyway to get the APC to execute, so just
+ * delegate down to server_select(). */
+ ret = server_select( NULL, 0, SELECT_INTERRUPTIBLE | SELECT_ALERTABLE, &zero );
+ * delegate down to server_wait(). */
+ ret = server_wait( NULL, 0, SELECT_INTERRUPTIBLE | SELECT_ALERTABLE, &zero );
+
+ /* This can happen if we received a system APC, and the APC fd was woken up
+ * before we got SIGUSR1. poll() doesn't return EINTR in that case. The
@@ -196,10 +196,10 @@ index 119a36f36..8a41f6961 100644
NTSTATUS esync_signal_and_wait( HANDLE signal, HANDLE wait, BOOLEAN alertable,
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 31714f905..009dd33ed 100644
index 009cfe73330..d7f88f7f8f0 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -239,6 +239,7 @@ struct ntdll_thread_data
@@ -261,6 +261,7 @@ struct ntdll_thread_data
{
struct debug_info *debug_info; /* info for debugstr functions */
int esync_queue_fd;/* fd to wait on for driver events */
@@ -208,10 +208,10 @@ index 31714f905..009dd33ed 100644
int request_fd; /* fd for sending server requests */
int reply_fd; /* fd for receiving server replies */
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 95c175aa7..711505242 100644
index 97e6d816bdd..129f42b3e01 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -328,6 +328,7 @@ void thread_init(void)
@@ -357,6 +357,7 @@ TEB *thread_init(void)
thread_data->wait_fd[0] = -1;
thread_data->wait_fd[1] = -1;
thread_data->esync_queue_fd = -1;
@@ -219,7 +219,7 @@ index 95c175aa7..711505242 100644
signal_init_thread( teb );
virtual_init_threading();
@@ -706,6 +707,7 @@ NTSTATUS WINAPI NtCreateThreadEx( HANDLE *handle_ptr, ACCESS_MASK access, OBJECT
@@ -757,6 +758,7 @@ NTSTATUS WINAPI NtCreateThreadEx( HANDLE *handle_ptr, ACCESS_MASK access, OBJECT
thread_data->wait_fd[1] = -1;
thread_data->start_stack = (char *)teb->Tib.StackBase;
thread_data->esync_queue_fd = -1;
@@ -228,10 +228,10 @@ index 95c175aa7..711505242 100644
pthread_attr_init( &pthread_attr );
pthread_attr_setstack( &pthread_attr, teb->DeallocationStack,
diff --git a/server/esync.c b/server/esync.c
index 5ef4dd282..4fb42e6f9 100644
index c68b2bc1fc0..a3cd1a8decf 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -247,19 +247,25 @@ int esync_create_fd( int initval, int flags )
@@ -246,19 +246,25 @@ int esync_create_fd( int initval, int flags )
#endif
}
@@ -261,7 +261,7 @@ index 5ef4dd282..4fb42e6f9 100644
}
}
@@ -385,3 +391,9 @@ DECL_HANDLER(get_esync_fd)
@@ -384,3 +390,9 @@ DECL_HANDLER(get_esync_fd)
release_object( obj );
}
@@ -272,7 +272,7 @@ index 5ef4dd282..4fb42e6f9 100644
+ send_client_fd( current->process, current->esync_apc_fd, current->id );
+}
diff --git a/server/esync.h b/server/esync.h
index aeb58c546..cea025d93 100644
index aeb58c5469c..cea025d9308 100644
--- a/server/esync.h
+++ b/server/esync.h
@@ -21,6 +21,7 @@
@@ -284,10 +284,10 @@ index aeb58c546..cea025d93 100644
void esync_clear( int fd );
diff --git a/server/protocol.def b/server/protocol.def
index 65a6696e3..d577edc0e 100644
index eca0325e5c5..975802737fa 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4054,6 +4054,11 @@ struct handle_info
@@ -4083,6 +4083,11 @@ struct handle_info
unsigned int shm_idx; /* this object's index into the shm section */
@END
@@ -300,7 +300,7 @@ index 65a6696e3..d577edc0e 100644
{
ESYNC_SEMAPHORE = 1,
diff --git a/server/thread.c b/server/thread.c
index b7ed72a5c..fc751c2cb 100644
index 7c8b6da8a55..7da1a620ddd 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -188,6 +188,7 @@ static inline void init_thread_structure( struct thread *thread )
@@ -311,7 +311,7 @@ index b7ed72a5c..fc751c2cb 100644
thread->debug_ctx = NULL;
thread->system_regs = 0;
thread->queue = NULL;
@@ -295,7 +296,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
@@ -297,7 +298,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
}
if (do_esync())
@@ -322,7 +322,7 @@ index b7ed72a5c..fc751c2cb 100644
set_fd_events( thread->request_fd, POLLIN ); /* start listening to events */
add_process_thread( thread->process, thread );
@@ -1050,8 +1054,13 @@ static int queue_apc( struct process *process, struct thread *thread, struct thr
@@ -1077,8 +1081,13 @@ static int queue_apc( struct process *process, struct thread *thread, struct thr
grab_object( apc );
list_add_tail( queue, &apc->entry );
if (!list_prev( queue, &apc->entry )) /* first one */
@@ -336,7 +336,7 @@ index b7ed72a5c..fc751c2cb 100644
return 1;
}
@@ -1098,6 +1107,10 @@ static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system_
@@ -1124,6 +1133,10 @@ static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system
apc = LIST_ENTRY( ptr, struct thread_apc, entry );
list_remove( ptr );
}
@@ -348,7 +348,7 @@ index b7ed72a5c..fc751c2cb 100644
}
diff --git a/server/thread.h b/server/thread.h
index dd06333fd..a62559dc4 100644
index 8a737010a5b..53409c11956 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -55,6 +55,7 @@ struct thread
@@ -360,5 +360,5 @@ index dd06333fd..a62559dc4 100644
unsigned int system_regs; /* which system regs have been set */
struct msg_queue *queue; /* message queue */
--
2.22.0
2.26.0

View File

@@ -1,15 +1,14 @@
From 78390efe3e29255fc19abd46e1741a332f6acde9 Mon Sep 17 00:00:00 2001
From 5262cc2c80ae65a0144dffb16072473149c70da7 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Wed, 20 Jun 2018 13:41:12 -0500
Subject: [PATCH 55/83] ntdll: Let the server know when we are doing a message
wait.
Subject: [PATCH] ntdll: Let the server know when we are doing a message wait.
---
dlls/ntdll/esync.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index 5eef7e3c8..d935a4af5 100644
index 80f659d6fde..f2dc32f3a0e 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -753,11 +753,22 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -29,12 +28,12 @@ index 5eef7e3c8..d935a4af5 100644
+ * hung queues. Do it like this. */
+ select_op.wait.op = SELECT_WAIT;
+ select_op.wait.handles[0] = wine_server_obj_handle( handles[count - 1] );
+ ret = server_select( &select_op, offsetof( select_op_t, wait.handles[1] ), 0, &zero );
+ ret = server_wait( &select_op, offsetof( select_op_t, wait.handles[1] ), 0, &zero );
+ if (ret != STATUS_WAIT_0 && ret != STATUS_TIMEOUT)
+ ERR("Unexpected ret %#x\n", ret);
}
if (has_esync && has_server)
--
2.20.1
2.26.0

View File

@@ -1,22 +1,21 @@
From e880d8328ae7d2602c828298fcf78e7bc9188add Mon Sep 17 00:00:00 2001
From ffbf02d62296a0a0f56d3792bad1ff107d2ef725 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Wed, 20 Jun 2018 14:04:04 -0500
Subject: [PATCH 56/83] ntdll: Avoid server_select() when waiting for critical
Subject: [PATCH] ntdll: Avoid server_select() when waiting for critical
sections.
There's no reason not to always use NtWaitForSingleObject(), so just do that.
And of course this lets esync work right.
---
dlls/ntdll/critsection.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/dlls/ntdll/critsection.c b/dlls/ntdll/critsection.c
index 6b17cebe0..d9add3f06 100644
index 1892d3abcb7..32907703730 100644
--- a/dlls/ntdll/critsection.c
+++ b/dlls/ntdll/critsection.c
@@ -220,12 +220,9 @@ static inline NTSTATUS wait_semaphore( RTL_CRITICAL_SECTION *crit, int timeout )
@@ -237,12 +237,9 @@ static inline NTSTATUS wait_semaphore( RTL_CRITICAL_SECTION *crit, int timeout )
{
HANDLE sem = get_semaphore( crit );
LARGE_INTEGER time;
@@ -25,11 +24,11 @@ index 6b17cebe0..d9add3f06 100644
time.QuadPart = timeout * (LONGLONG)-10000000;
- select_op.wait.op = SELECT_WAIT;
- select_op.wait.handles[0] = wine_server_obj_handle( sem );
- ret = server_select( &select_op, offsetof( select_op_t, wait.handles[1] ), 0, &time );
- ret = server_wait( &select_op, offsetof( select_op_t, wait.handles[1] ), 0, &time );
+ ret = NtWaitForSingleObject( sem, FALSE, &time );
}
return ret;
}
--
2.20.1
2.26.0

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