Compare commits

...

16 Commits
v7.19 ... v7.21

Author SHA1 Message Date
Alistair Leslie-Hughes
d935a41e61 Release v7.21 2022-11-13 14:32:51 +11:00
Paul Gofman
31acabe792 Updated and re-enabled ntdll-ForceBottomUpAlloc patchset. 2022-11-13 12:02:37 +11:00
Paul Gofman
1a2b47b084 Added ntdll-Placeholders patchset. 2022-11-13 12:02:37 +11:00
Paul Gofman
2e9f238732 Updated and re-enabled ntdll-Syscall_Emulation patchset. 2022-11-13 12:02:37 +11:00
Zebediah Figura
cf32a7092b eventfd_synchronization: Fix compilation with patch 0002.
esync doesn't work when partially applied, but it should at least compile, and
function with WINEESYNC=0.
2022-11-11 16:54:02 -06:00
Alistair Leslie-Hughes
4303e3ee3b Rebase against 384b0b35c357ca31ccb080162e1f39f93ec70054. 2022-11-11 17:01:04 +11:00
Zebediah Figura
49ed7ae4a0 Rebase against 13cc08e32d6c04f8f915d07cda39638ee99c3d43. 2022-11-08 16:54:42 -06:00
Alistair Leslie-Hughes
eff142bc57 Rebase against 1d636da205e39436bbd71849ceeebc5420bf98a9. 2022-11-08 11:03:43 +11:00
Alistair Leslie-Hughes
bd2608b12c Rebase against 7be72ce2a708ec88aa2362352f37db30529251c4. 2022-11-02 10:28:15 +11:00
Alistair Leslie-Hughes
acb054627a Release v7.20 2022-11-01 10:26:30 +11:00
Alistair Leslie-Hughes
f07f287395 Updated mfplat-streaming-support patchset
Re-enabled.

0065 Disabled until it can properly be rebased.

Patch 0055 - Helps some games which request ARB32 output but doesn't always draw well.
2022-10-25 13:35:44 +11:00
Alistair Leslie-Hughes
8703ad8375 Rebase against 65797763b3ac4fcab7ffc83a4f95b2e87c81f58a. 2022-10-25 11:28:21 +11:00
Alistair Leslie-Hughes
1f500db5b7 Updated nvcuda-CUDA_Support patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53809
2022-10-21 14:54:58 +11:00
Alistair Leslie-Hughes
1deec9df95 Small change 2022-10-20 21:45:55 +11:00
Alistair Leslie-Hughes
a8e296715c Updated URL's to gitlab 2022-10-20 21:24:52 +11:00
Alistair Leslie-Hughes
43d5c1e0f5 Rebase against e72a16b57f66b63a16bb3d1619ac4d42632cb141. 2022-10-20 11:18:53 +11:00
67 changed files with 2640 additions and 1529 deletions

View File

@@ -94,17 +94,17 @@ proper implementation. In the event that this happens, we add the patches to
wine-staging instead, and keep them updated and maintained as well as attempt to
clean them up to be upstreamed. We also both write and verify patches which fix
various bugs that may not have patches, and in turn allow them run better using
WINE. This includes testing on various hardware, games, and applications.
WINE. This includes testing on various hardware, games and applications.
Any expenses for applications, games, or hardware which we do not own comes out
of pocket. In order to alleviate these expenses, we are now accepting donations.
This in turn allows us to continue to perform testing, provide fixes, and get
them upstreamed, ultimately aiming to provide a better experience for all WINE
users. All of our work is provided publicly for free and can be found at
<https://github.com/wine-staging/wine-staging>. We do not expect to be paid for
<https://gitlab.winehq.org/wine/wine-staging>. We do not expect to be paid for
any of the work provided, nor will donators receive any special benefits or
compensation.
Donations are recieved through Patreon. Anyone interested may donate here:
https://www.patreon.com/winestaging
https://www.patreon.com/winestaging

View File

@@ -1,4 +1,4 @@
From 846f2603e9d2a3a3b5a56b0e1140bb49a95053a6 Mon Sep 17 00:00:00 2001
From ec18233558b62aa736b5ecf20d2f7487e2823286 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Thu, 7 Jun 2018 20:09:59 -0500
Subject: [PATCH] server: Create server objects for eventfd-based
@@ -15,7 +15,7 @@ Subject: [PATCH] server: Create server objects for eventfd-based
create mode 100644 server/esync.h
diff --git a/server/Makefile.in b/server/Makefile.in
index c81a2112632..da20dff9f56 100644
index 3b9446fe224..776faec63e4 100644
--- a/server/Makefile.in
+++ b/server/Makefile.in
@@ -11,6 +11,7 @@ C_SRCS = \
@@ -28,7 +28,7 @@ index c81a2112632..da20dff9f56 100644
file.c \
diff --git a/server/esync.c b/server/esync.c
new file mode 100644
index 00000000000..b9dbfa322bc
index 00000000000..35b4833fd4c
--- /dev/null
+++ b/server/esync.c
@@ -0,0 +1,318 @@
@@ -158,7 +158,7 @@ index 00000000000..b9dbfa322bc
+ NULL, /* satisfied */
+ no_signal, /* signal */
+ no_get_fd, /* get_fd */
+ no_map_access, /* map_access */
+ default_map_access, /* map_access */
+ default_get_sd, /* get_sd */
+ default_set_sd, /* set_sd */
+ default_get_full_name, /* get_full_name */
@@ -403,10 +403,10 @@ index a134d811d82..3436b0871b4 100644
set_current_time();
init_scheduler();
diff --git a/server/protocol.def b/server/protocol.def
index 6bfcda213a4..6b0e0e6f6e4 100644
index 99df502e398..9e15ada5bd0 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3738,7 +3738,6 @@ struct handle_info
@@ -3777,7 +3777,6 @@ struct handle_info
obj_handle_t handle; /* process handle */
@END
@@ -414,7 +414,7 @@ index 6bfcda213a4..6b0e0e6f6e4 100644
/* Iterate thread list for process */
@REQ(get_next_thread)
obj_handle_t process; /* process handle */
@@ -3749,3 +3748,27 @@ struct handle_info
@@ -3788,3 +3787,27 @@ struct handle_info
@REPLY
obj_handle_t handle; /* next thread handle */
@END
@@ -443,5 +443,5 @@ index 6bfcda213a4..6b0e0e6f6e4 100644
+ unsigned int shm_idx;
+@END
--
2.35.1
2.38.1

View File

@@ -1,4 +1,4 @@
From c204c9ed2a8504868c3cbf487e7a29c4e7254d3f Mon Sep 17 00:00:00 2001
From 271f43a1fafb19e1404b05ec597b504ecad74784 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 12:09:22 -0500
Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores.
@@ -16,10 +16,10 @@ Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores.
create mode 100644 dlls/ntdll/unix/esync.h
diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in
index 185bc563e68..d7c757cab32 100644
index 07688a5fcf6..4e490c475a2 100644
--- a/dlls/ntdll/Makefile.in
+++ b/dlls/ntdll/Makefile.in
@@ -46,6 +46,7 @@ C_SRCS = \
@@ -47,6 +47,7 @@ C_SRCS = \
unix/cdrom.c \
unix/debug.c \
unix/env.c \
@@ -346,7 +346,7 @@ index 00000000000..a50a755149a
+
+extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 10884a7a673..28cc48e04bf 100644
index 35f2e5f986f..4d95c29ab24 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -89,6 +89,7 @@
@@ -357,8 +357,8 @@ index 10884a7a673..28cc48e04bf 100644
#include "wine/list.h"
#include "wine/debug.h"
@@ -2082,6 +2083,7 @@ static void start_main_thread(void)
signal_init_thread( teb );
@@ -2188,6 +2189,7 @@ static void start_main_thread(void)
signal_alloc_thread( teb );
dbg_init();
startup_info_size = server_init_process();
+ esync_init();
@@ -366,7 +366,7 @@ index 10884a7a673..28cc48e04bf 100644
init_cpu_info();
init_files();
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index 6a3224d8385..de65f936a59 100644
index b7d8733f2bc..8cd5f0474e6 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -106,7 +106,7 @@ sigset_t server_block_set; /* signals to block during server calls */
@@ -378,7 +378,7 @@ index 6a3224d8385..de65f936a59 100644
/* atomically exchange a 64-bit value */
static inline LONG64 interlocked_xchg64( LONG64 *dest, LONG64 val )
@@ -803,7 +803,7 @@ void wine_server_send_fd( int fd )
@@ -834,7 +834,7 @@ void wine_server_send_fd( int fd )
*
* Receive a file descriptor passed from the server.
*/
@@ -388,7 +388,7 @@ index 6a3224d8385..de65f936a59 100644
struct iovec vec;
struct msghdr msghdr;
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 442243d8bcf..72cbf92f93c 100644
index 9112572c67d..c5f30428f79 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -64,6 +64,7 @@
@@ -399,7 +399,7 @@ index 442243d8bcf..72cbf92f93c 100644
WINE_DEFAULT_DEBUG_CHANNEL(sync);
@@ -262,6 +263,9 @@ NTSTATUS WINAPI NtCreateSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJ
@@ -273,6 +274,9 @@ NTSTATUS WINAPI NtCreateSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJ
if (max <= 0 || initial < 0 || initial > max) return STATUS_INVALID_PARAMETER;
if ((ret = alloc_object_attributes( attr, &objattr, &len ))) return ret;
@@ -422,5 +422,5 @@ index b9dbfa322bc..99e57eca44c 100644
int do_esync(void)
{
--
2.34.1
2.38.1

View File

@@ -1,4 +1,4 @@
From 161ae4c64b5e3bd33771671f518c482a6a66700b Mon Sep 17 00:00:00 2001
From 614c13aed3d20a772c3ccd26547fa93a56fcc40b Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sun, 10 Jun 2018 19:08:18 -0500
Subject: [PATCH] server: Implement esync_map_access().
@@ -8,10 +8,10 @@ Subject: [PATCH] server: Implement esync_map_access().
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/server/esync.c b/server/esync.c
index 1703608263f..20f149cdad3 100644
index eca9b6aa67d..3a334b3b330 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -114,6 +114,7 @@ struct esync
@@ -112,6 +112,7 @@ struct esync
};
static void esync_dump( struct object *obj, int verbose );
@@ -19,16 +19,16 @@ index 1703608263f..20f149cdad3 100644
static void esync_destroy( struct object *obj );
const struct object_ops esync_ops =
@@ -128,7 +129,7 @@ const struct object_ops esync_ops =
@@ -126,7 +127,7 @@ const struct object_ops esync_ops =
NULL, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
- no_map_access, /* map_access */
- default_map_access, /* map_access */
+ esync_map_access, /* map_access */
default_get_sd, /* get_sd */
default_set_sd, /* set_sd */
default_get_full_name, /* get_full_name */
@@ -148,6 +149,16 @@ static void esync_dump( struct object *obj, int verbose )
@@ -146,6 +147,16 @@ static void esync_dump( struct object *obj, int verbose )
fprintf( stderr, "esync fd=%d\n", esync->fd );
}
@@ -46,5 +46,5 @@ index 1703608263f..20f149cdad3 100644
{
struct esync *esync = (struct esync *)obj;
--
2.28.0
2.38.1

View File

@@ -1,7 +1,7 @@
From 6e5861b34f4359129d0ebec199e2106db4b7be43 Mon Sep 17 00:00:00 2001
From eba9e414d60a33dfde7e7b978fcdddbaf9bfe5b6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Wed, 21 Oct 2020 16:03:21 -0500
Subject: [PATCH 08/88] winegstreamer: Allow videoconvert to parallelize.
Subject: [PATCH] winegstreamer: Allow videoconvert to parallelize.
Not sure if this should be called a hack. It's not the *best* solution to the problem, but it's not a wrong one either.
@@ -11,10 +11,10 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
1 file changed, 3 insertions(+)
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 0a6cf927187..5f3b4375b4c 100644
index 0573c99858b..5df08dc5fd7 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -1189,6 +1189,9 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
@@ -760,6 +760,9 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
if (!(vconv = create_element("videoconvert", "base")))
goto out;
@@ -25,5 +25,5 @@ index 0a6cf927187..5f3b4375b4c 100644
if (!(flip = create_element("videoflip", "good")))
goto out;
--
2.34.1
2.37.2

View File

@@ -1,8 +1,7 @@
From 9986fba2a9fd7f37a9d27a0257c8b20f59c56d8f Mon Sep 17 00:00:00 2001
From bd90f10550e2de898517d0a41b94f76f23fc9601 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 19 Mar 2021 17:01:54 -0400
Subject: [PATCH 25/88] winegstreamer: Report streams backwards in media
source.
Subject: [PATCH] winegstreamer: Report streams backwards in media source.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
@@ -10,10 +9,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
index bccbf888a4a..2ed31666cad 100644
index 43beb71838a..d39b01b8578 100644
--- a/dlls/winegstreamer/media_source.c
+++ b/dlls/winegstreamer/media_source.c
@@ -1491,7 +1491,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
@@ -1480,7 +1480,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
descriptors = malloc(object->stream_count * sizeof(IMFStreamDescriptor *));
for (i = 0; i < object->stream_count; i++)
{
@@ -23,5 +22,5 @@ index bccbf888a4a..2ed31666cad 100644
if (FAILED(hr = MFCreatePresentationDescriptor(object->stream_count, descriptors, &object->pres_desc)))
--
2.34.1
2.37.2

View File

@@ -1,7 +1,7 @@
From 856636245cd3de1bc91d76146e18fef864ec7065 Mon Sep 17 00:00:00 2001
From 1913dfb174c48d60d0b81aba3fb9f03b5cef78c2 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 4 Dec 2020 16:17:11 -0500
Subject: [PATCH 38/88] winegstreamer: In the default configuration, select one
Subject: [PATCH] winegstreamer: In the default configuration, select one
stream of each major type.
---
@@ -9,10 +9,10 @@ Subject: [PATCH 38/88] winegstreamer: In the default configuration, select one
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
index 2ed31666cad..c97348cc2d6 100644
index d39b01b8578..de6a2c2b232 100644
--- a/dlls/winegstreamer/media_source.c
+++ b/dlls/winegstreamer/media_source.c
@@ -1397,6 +1397,7 @@ static const IMFMediaSourceVtbl IMFMediaSource_vtbl =
@@ -1386,6 +1386,7 @@ static const IMFMediaSourceVtbl IMFMediaSource_vtbl =
static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_source **out_media_source)
{
@@ -20,7 +20,7 @@ index 2ed31666cad..c97348cc2d6 100644
IMFStreamDescriptor **descriptors = NULL;
unsigned int stream_count = UINT_MAX;
struct media_source *object;
@@ -1497,9 +1498,28 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
@@ -1486,9 +1487,28 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
if (FAILED(hr = MFCreatePresentationDescriptor(object->stream_count, descriptors, &object->pres_desc)))
goto fail;
@@ -51,5 +51,5 @@ index 2ed31666cad..c97348cc2d6 100644
}
free(descriptors);
--
2.34.1
2.37.2

View File

@@ -1,18 +1,18 @@
From 6c81e31b53f5b3f3fd798e3d3fb43f9a2df8fa5b Mon Sep 17 00:00:00 2001
From 7649a8e89c0dff9ecba0314234bedb507c6ade87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Wed, 15 Dec 2021 11:51:33 +0100
Subject: [PATCH 43/88] winegstreamer: Update offset according to the size of
the buffer read.
Subject: [PATCH] winegstreamer: Update offset according to the size of the
buffer read.
---
dlls/winegstreamer/wg_parser.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index a11fc8c4f68..42c727fbd0b 100644
index 5df08dc5fd7..6ec8e1bdbd8 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -1642,7 +1642,7 @@ static void *push_data(void *arg)
@@ -998,7 +998,7 @@ static void *push_data(void *arg)
break;
}
@@ -22,5 +22,5 @@ index a11fc8c4f68..42c727fbd0b 100644
buffer->duration = buffer->pts = -1;
if ((ret = gst_pad_push(parser->my_src, buffer)) < 0)
--
2.34.1
2.37.2

View File

@@ -1,21 +1,21 @@
From 3d8fddbac3026e1eed86f718452f833ac2d6b5c6 Mon Sep 17 00:00:00 2001
From bdf230e4b3fedad3cf63d612dbc57e68fd33094a Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Thu, 18 Mar 2021 15:25:17 -0400
Subject: [PATCH 50/88] winegstreamer: Implement MF_SD_LANGUAGE.
Subject: [PATCH] winegstreamer: Implement MF_SD_LANGUAGE.
---
dlls/winegstreamer/gst_private.h | 1 +
dlls/winegstreamer/main.c | 12 ++++++++++++
dlls/winegstreamer/media_source.c | 20 +++++++++++++++++++-
dlls/winegstreamer/unixlib.h | 8 ++++++++
dlls/winegstreamer/wg_parser.c | 30 ++++++++++++++++++++++++++++++
5 files changed, 70 insertions(+), 1 deletion(-)
dlls/winegstreamer/wg_parser.c | 31 +++++++++++++++++++++++++++++++
5 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h
index 6e7c53782c8..49879fe416d 100644
index c33a89afd5b..21aef431039 100644
--- a/dlls/winegstreamer/gst_private.h
+++ b/dlls/winegstreamer/gst_private.h
@@ -94,6 +94,7 @@ void wg_parser_stream_notify_qos(struct wg_parser_stream *stream,
@@ -95,6 +95,7 @@ void wg_parser_stream_notify_qos(struct wg_parser_stream *stream,
/* Returns the duration in 100-nanosecond units. */
uint64_t wg_parser_stream_get_duration(struct wg_parser_stream *stream);
@@ -24,10 +24,10 @@ index 6e7c53782c8..49879fe416d 100644
void wg_parser_stream_seek(struct wg_parser_stream *stream, double rate,
uint64_t start_pos, uint64_t stop_pos, DWORD start_flags, DWORD stop_flags);
diff --git a/dlls/winegstreamer/main.c b/dlls/winegstreamer/main.c
index 316becdbc97..a9a9c72136d 100644
index 2efa3bd26ac..2b9f10e7b37 100644
--- a/dlls/winegstreamer/main.c
+++ b/dlls/winegstreamer/main.c
@@ -253,6 +253,18 @@ uint64_t wg_parser_stream_get_duration(struct wg_parser_stream *stream)
@@ -271,6 +271,18 @@ uint64_t wg_parser_stream_get_duration(struct wg_parser_stream *stream)
return params.duration;
}
@@ -47,10 +47,10 @@ index 316becdbc97..a9a9c72136d 100644
uint64_t start_pos, uint64_t stop_pos, DWORD start_flags, DWORD stop_flags)
{
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
index fd6479d9879..11040ac159a 100644
index 042c635ae93..7c58dce5e27 100644
--- a/dlls/winegstreamer/media_source.c
+++ b/dlls/winegstreamer/media_source.c
@@ -1492,7 +1492,25 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
@@ -1482,7 +1482,25 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
descriptors = malloc(object->stream_count * sizeof(IMFStreamDescriptor *));
for (i = 0; i < object->stream_count; i++)
{
@@ -78,10 +78,10 @@ index fd6479d9879..11040ac159a 100644
if (FAILED(hr = MFCreatePresentationDescriptor(object->stream_count, descriptors, &object->pres_desc)))
diff --git a/dlls/winegstreamer/unixlib.h b/dlls/winegstreamer/unixlib.h
index 17b5c606014..fdcecfc96d5 100644
index 9c53ecbfbc3..0c0fec0e966 100644
--- a/dlls/winegstreamer/unixlib.h
+++ b/dlls/winegstreamer/unixlib.h
@@ -254,6 +254,13 @@ struct wg_parser_stream_get_duration_params
@@ -249,6 +249,13 @@ struct wg_parser_stream_get_duration_params
UINT64 duration;
};
@@ -95,27 +95,27 @@ index 17b5c606014..fdcecfc96d5 100644
struct wg_parser_stream_seek_params
{
struct wg_parser_stream *stream;
@@ -290,6 +297,7 @@ enum unix_funcs
@@ -309,6 +316,7 @@ enum unix_funcs
unix_wg_parser_stream_notify_qos,
unix_wg_parser_stream_get_duration,
+ unix_wg_parser_stream_get_language,
unix_wg_parser_stream_seek,
unix_wg_parser_stream_drain,
unix_wg_transform_create,
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 06e07b874bf..dc655b275bd 100644
index 6ec8e1bdbd8..6fa712dd1fb 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -110,6 +110,7 @@ struct wg_parser_stream
@@ -109,6 +109,7 @@ struct wg_parser_stream
bool flushing, eos, enabled, has_caps;
uint64_t duration;
+ gchar *language_code;
};
static enum wg_audio_format wg_audio_format_from_gst(GstAudioFormat format)
@@ -871,6 +872,14 @@ static NTSTATUS wg_parser_stream_get_duration(void *args)
static NTSTATUS wg_parser_get_stream_count(void *args)
@@ -350,6 +351,14 @@ static NTSTATUS wg_parser_stream_get_duration(void *args)
return S_OK;
}
@@ -130,7 +130,7 @@ index 06e07b874bf..dc655b275bd 100644
static NTSTATUS wg_parser_stream_seek(void *args)
{
GstSeekType start_type = GST_SEEK_TYPE_SET, stop_type = GST_SEEK_TYPE_SET;
@@ -1321,6 +1330,9 @@ static void free_stream(struct wg_parser_stream *stream)
@@ -723,6 +732,9 @@ static void free_stream(struct wg_parser_stream *stream)
pthread_cond_destroy(&stream->event_cond);
pthread_cond_destroy(&stream->event_empty_cond);
@@ -140,7 +140,7 @@ index 06e07b874bf..dc655b275bd 100644
free(stream);
}
@@ -1931,6 +1943,22 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event)
@@ -1187,6 +1199,22 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event)
return ret;
}
@@ -160,25 +160,26 @@ index 06e07b874bf..dc655b275bd 100644
+ return ret;
+}
+
static HRESULT wg_parser_connect_inner(struct wg_parser *parser)
static NTSTATUS wg_parser_connect(void *args)
{
GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE("wine_src",
@@ -2066,6 +2094,7 @@ static NTSTATUS wg_parser_connect(void *args)
pthread_cond_wait(&parser->init_cond, &parser->mutex);
}
}
GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE("quartz_src",
@@ -1315,6 +1343,8 @@ static NTSTATUS wg_parser_connect(void *args)
* attempting to read anything), but we don't want to waste CPU time
* trying to decode them. */
stream->enabled = true;
+
+ stream->language_code = query_language(stream->their_src);
}
pthread_mutex_unlock(&parser->mutex);
@@ -2561,6 +2590,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
@@ -1631,6 +1661,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
X(wg_parser_stream_notify_qos),
X(wg_parser_stream_get_duration),
+ X(wg_parser_stream_get_language),
X(wg_parser_stream_seek),
X(wg_parser_stream_drain),
X(wg_transform_create),
--
2.34.1
2.37.2

View File

@@ -1,7 +1,7 @@
From 5ebda711a9d8b5e3194464eab3fecf52ed3c8b59 Mon Sep 17 00:00:00 2001
From 56ad22a46d27fdc5313aff459f6334bb0051e21a Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov@codeweavers.com>
Date: Wed, 12 Jan 2022 22:48:35 +0300
Subject: [PATCH 55/88] winegstreamer: Add MFVideoFormat_ARGB32 output for the
Subject: [PATCH] winegstreamer: Add MFVideoFormat_ARGB32 output for the
source.
(cherry picked from commit 9812591f0003c5c611faa59ab9b3cb73a85be637)
@@ -12,10 +12,10 @@ CW-Bug-Id: #19975
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
index e5f25eed63a..9d5a8b831b9 100644
index de6a2c2b232..042c635ae93 100644
--- a/dlls/winegstreamer/media_source.c
+++ b/dlls/winegstreamer/media_source.c
@@ -873,7 +873,7 @@ static HRESULT new_media_stream(struct media_source *source,
@@ -855,7 +855,7 @@ static HRESULT new_media_stream(struct media_source *source,
static HRESULT media_stream_init_desc(struct media_stream *stream)
{
IMFMediaTypeHandler *type_handler = NULL;
@@ -24,7 +24,7 @@ index e5f25eed63a..9d5a8b831b9 100644
struct wg_format format;
DWORD type_count = 0;
unsigned int i;
@@ -892,6 +892,7 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
@@ -874,6 +874,7 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
&MFVideoFormat_YUY2,
&MFVideoFormat_IYUV,
&MFVideoFormat_I420,
@@ -33,5 +33,5 @@ index e5f25eed63a..9d5a8b831b9 100644
IMFMediaType *base_type = mf_media_type_from_wg_format(&format);
--
2.34.1
2.37.2

View File

@@ -1,2 +1 @@
Fixes: [49692] Multiple applications need a Media Foundation media source implementation
Disabled: True

View File

@@ -1,114 +0,0 @@
From bef93835ceb4a482c348b0aa6e62ce4fee5e3f35 Mon Sep 17 00:00:00 2001
From: Zhenbo Li <litimetal@gmail.com>
Date: Tue, 1 Jul 2014 19:45:43 +0800
Subject: [PATCH] mshtml: Add IHTMLLocation::hash property's getter
implementation.
---
dlls/mshtml/htmllocation.c | 11 ++++++--
dlls/mshtml/tests/htmldoc.c | 53 ++++++++++++++++++++++++++++++++++++-
2 files changed, 61 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmllocation.c b/dlls/mshtml/htmllocation.c
index 8f7800ff2a3..2b42939a39f 100644
--- a/dlls/mshtml/htmllocation.c
+++ b/dlls/mshtml/htmllocation.c
@@ -524,8 +524,15 @@ static HRESULT WINAPI HTMLLocation_get_search(IHTMLLocation *iface, BSTR *p)
static HRESULT WINAPI HTMLLocation_put_hash(IHTMLLocation *iface, BSTR v)
{
HTMLLocation *This = impl_from_IHTMLLocation(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+
+ if(!This->window || !This->window->base.outer_window) {
+ FIXME("No window available\n");
+ return E_FAIL;
+ }
+
+ return navigate_url(This->window->base.outer_window, v, This->window->base.outer_window->uri, 0);
}
static HRESULT WINAPI HTMLLocation_get_hash(IHTMLLocation *iface, BSTR *p)
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index ff050863b6f..2c118d89d1d 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -5963,6 +5963,56 @@ static void test_Persist(IHTMLDocument2 *doc, IMoniker *mon)
}
}
+static void test_put_hash(IHTMLDocument2 *doc, const WCHAR *new_hash)
+{
+ static WCHAR nav_url_buff[256];
+ IHTMLLocation *location;
+ BSTR str;
+ WCHAR *psharp;
+ HRESULT hres;
+
+ trace("put_hash, url = %s, new hash = %s\n", debugstr_w(nav_url), debugstr_w(new_hash));
+
+ location = NULL;
+ hres = IHTMLDocument2_get_location(doc, &location);
+ ok(hres == S_OK, "get_location failed: %08lx\n", hres);
+ ok(location != NULL, "location == NULL\n");
+
+ SET_EXPECT(TranslateUrl);
+ SET_EXPECT(Exec_ShellDocView_67);
+ SET_EXPECT(FireBeforeNavigate2);
+ SET_EXPECT(FireDocumentComplete);
+ SET_EXPECT(FireNavigateComplete2);
+
+ /* Edit nav_url */
+ wcscpy(nav_url_buff, nav_url);
+ psharp = wcschr(nav_url_buff, '#');
+ if (psharp)
+ *psharp = '\0';
+ wcscat(nav_url_buff, new_hash);
+ nav_url = nav_url_buff;
+
+ str = SysAllocString(new_hash);
+ hres = IHTMLLocation_put_hash(location, str);
+ ok (hres == S_OK, "put_hash failed: %08lx\n", hres);
+ SysFreeString(str);
+
+ CHECK_CALLED(TranslateUrl);
+ CHECK_CALLED_BROKEN(Exec_ShellDocView_67); /* Broken on Win7 and 8 */
+ CHECK_CALLED(FireBeforeNavigate2);
+ CHECK_CALLED(FireDocumentComplete);
+ CHECK_CALLED(FireNavigateComplete2);
+
+
+ /* Check the result */
+ hres = IHTMLLocation_get_hash(location, &str);
+ ok(hres == S_OK, "get_hash failed: %08lx\n", hres);
+ ok(!wcscmp(str, new_hash), "expected %s, got %s\n", debugstr_w(new_hash), debugstr_w(str));
+ SysFreeString(str);
+
+ IHTMLLocation_Release(location);
+}
+
static void test_put_href(IHTMLDocument2 *doc, BOOL use_replace, const WCHAR *href, const WCHAR *new_nav_url, BOOL is_js,
BOOL is_hash, DWORD dwl_flags)
{
@@ -6148,7 +6198,7 @@ static void test_load_history(IHTMLDocument2 *doc)
ok(hres == S_OK, "Could not get IPersistHistory iface: %08lx\n", hres);
prev_url = nav_url;
- nav_url = L"http://test.winehq.org/tests/winehq_snapshot/#test";
+ nav_url = L"http://test.winehq.org/tests/winehq_snapshot/#hash_test";
nav_serv_url = L"http://test.winehq.org/tests/winehq_snapshot/";
SET_EXPECT(Exec_ShellDocView_138);
@@ -8017,6 +8067,7 @@ static void test_HTMLDocument_http(BOOL with_wbapp)
nav_url = nav_serv_url = L"http://test.winehq.org/tests/winehq_snapshot/"; /* for valid prev nav_url */
if(support_wbapp) {
test_put_href(doc, FALSE, L"#test", L"http://test.winehq.org/tests/winehq_snapshot/#test", FALSE, TRUE, 0);
+ test_put_hash(doc, L"#hash_test");
test_travellog(doc);
test_refresh(doc);
}
--
2.34.1

View File

@@ -1 +0,0 @@
Fixes: [32967] Add IHTMLLocation::hash property's getter implementation

View File

@@ -1,4 +1,4 @@
From 85a401a87c2550aab3b2eb85e518ac43ed2ff533 Mon Sep 17 00:00:00 2001
From 6059fc95c799ed70419bb170c99ddb11507e66f9 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 11 Jun 2019 15:27:50 +1000
Subject: [PATCH] mshtml: Improve IOleInPlaceActiveObject TranslateAccelerator
@@ -9,13 +9,13 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=37058
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/oleobj.c b/dlls/mshtml/oleobj.c
index 274db8c22b..ba02e811cc 100644
index a9bd8a3d558..444551778e1 100644
--- a/dlls/mshtml/oleobj.c
+++ b/dlls/mshtml/oleobj.c
@@ -1024,8 +1024,28 @@ static HRESULT WINAPI OleInPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceAct
static HRESULT WINAPI OleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface, LPMSG lpmsg)
@@ -1413,8 +1413,28 @@ static HRESULT WINAPI DocObjOleInPlaceActiveObject_ContextSensitiveHelp(IOleInPl
static HRESULT WINAPI DocObjOleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface, LPMSG lpmsg)
{
HTMLDocument *This = impl_from_IOleInPlaceActiveObject(iface);
HTMLDocumentObj *This = HTMLDocumentObj_from_IOleInPlaceActiveObject(iface);
- FIXME("(%p)->(%p)\n", This, lpmsg);
- return E_NOTIMPL;
+ HRESULT hres = S_FALSE;
@@ -42,7 +42,7 @@ index 274db8c22b..ba02e811cc 100644
+ return hres;
}
static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface,
static HRESULT WINAPI DocObjOleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface,
--
2.17.1
2.37.2

View File

@@ -1,4 +1,4 @@
From d28a26a59e9837191cc48854d5dad16eba532f04 Mon Sep 17 00:00:00 2001
From 5814a4b9c7d4dec027b0c2dd29822664aa56ada1 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 14 Jan 2020 21:39:23 +0300
Subject: [PATCH] ntdll: Increase step after failed map attempt in
@@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Increase step after failed map attempt in
1 file changed, 1 insertion(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index d79e3de662e..f8f317a6483 100644
index 84a4e331ad7..a63882023e6 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -1073,6 +1073,7 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
@@ -1327,6 +1327,7 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
step == 0)
break;
start = (char *)start + step;
@@ -21,5 +21,5 @@ index d79e3de662e..f8f317a6483 100644
return NULL;
--
2.26.2
2.38.1

View File

@@ -1,4 +1,4 @@
From 266f5082387ec92cb79a2ec3ce71d956cf05190d Mon Sep 17 00:00:00 2001
From b1e6d32e7dc3bac93419f3a573f509ee6e1177b2 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Thu, 23 Jul 2020 18:40:39 +0300
Subject: [PATCH] ntdll: Increase free ranges view block size on 64 bit.
@@ -8,10 +8,10 @@ Subject: [PATCH] ntdll: Increase free ranges view block size on 64 bit.
1 file changed, 4 insertions(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index f8f317a6483..4ca033b0e19 100644
index a63882023e6..83909f57d4a 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -183,7 +183,11 @@ static BYTE *pages_vprot;
@@ -205,7 +205,11 @@ static BYTE *pages_vprot;
#endif
static struct file_view *view_block_start, *view_block_end, *next_free_view;
@@ -24,5 +24,5 @@ index f8f317a6483..4ca033b0e19 100644
static void *preload_reserve_end;
static BOOL force_exec_prot; /* whether to force PROT_EXEC on all PROT_READ mmaps */
--
2.26.2
2.38.1

View File

@@ -1,25 +1,25 @@
From bcc882f5d1980cbf353891d1e1686e97c068f8c7 Mon Sep 17 00:00:00 2001
From d29a79d8cca2220c838fbbea6ea81b9f73070ba5 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 2 Jun 2020 21:06:33 +0300
Subject: [PATCH] ntdll: Exclude natively mapped areas from free areas list.
---
dlls/ntdll/unix/virtual.c | 137 ++++++++++++++++++++++++++++++--------
1 file changed, 109 insertions(+), 28 deletions(-)
dlls/ntdll/unix/virtual.c | 118 ++++++++++++++++++++++++++++++++------
1 file changed, 100 insertions(+), 18 deletions(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 4899fc7b443..cee739bd942 100644
index 4bce8f2f806..3c1bf6edc30 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -143,6 +143,7 @@ struct file_view
#define VPROT_WRITEWATCH 0x40
/* per-mapping protection flags */
@@ -125,6 +125,7 @@ struct file_view
#define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */
+#define VPROT_NATIVE 0x0400
#define VPROT_PLACEHOLDER 0x0400
#define VPROT_FROMPLACEHOLDER 0x0800
+#define VPROT_NATIVE 0x1000
/* Conversion from VPROT_* to Win32 flags */
static const BYTE VIRTUAL_Win32Flags[16] =
@@ -1081,7 +1082,9 @@ static void dump_view( struct file_view *view )
@@ -1119,7 +1120,9 @@ static void dump_view( struct file_view *view )
BYTE prot = get_page_vprot( addr );
TRACE( "View: %p - %p", addr, addr + view->size - 1 );
@@ -28,26 +28,18 @@ index 4899fc7b443..cee739bd942 100644
+ TRACE(" (native)\n");
+ else if (view->protect & VPROT_SYSTEM)
TRACE( " (builtin image)\n" );
else if (view->protect & SEC_IMAGE)
TRACE( " (image)\n" );
@@ -1216,6 +1219,16 @@ static struct file_view *find_view_range( const void *addr, size_t size )
return NULL;
}
+struct alloc_area
+{
+ char *map_area_start, *map_area_end, *result;
+ size_t size;
+ ptrdiff_t step;
+ int unix_prot;
+ BOOL top_down;
else if (view->protect & VPROT_PLACEHOLDER)
TRACE( " (placeholder)\n" );
@@ -1274,6 +1277,8 @@ struct alloc_area
int unix_prot;
BOOL top_down;
UINT_PTR align_mask;
+ char *native_mapped;
+ size_t native_mapped_size;
+};
};
/***********************************************************************
* try_map_free_area
@@ -1223,21 +1236,27 @@ static struct file_view *find_view_range( const void *addr, size_t size )
@@ -1282,21 +1287,28 @@ struct alloc_area
* Try mmaping some expected free memory region, eventually stepping and
* retrying inside it, and return where it actually succeeded, or NULL.
*/
@@ -56,6 +48,7 @@ index 4899fc7b443..cee739bd942 100644
+static void* try_map_free_area( struct alloc_area *area, void *base, void *end, void *start )
{
+ ptrdiff_t step = area->step;
+ UINT_PTR abs_step = step > 0 ? step : -step;
void *ptr;
- while (start && base <= start && (char*)start + size <= (char*)end)
@@ -71,54 +64,40 @@ index 4899fc7b443..cee739bd942 100644
+ strerror(errno), start, (char *)start + area->size, area->unix_prot );
return NULL;
}
+ if (!area->native_mapped && step)
+ if (!area->native_mapped && step && abs_step < (granularity_mask + 1) * 2)
+ {
+ area->native_mapped = start;
+ area->native_mapped_size = step > 0 ? step : -step;
+ area->native_mapped_size = abs_step;
+ area->native_mapped_size = min(area->native_mapped_size, (char *)end - (char *)start);
+ }
if ((step > 0 && (char *)end - (char *)start < step) ||
(step < 0 && (char *)start - (char *)base < -step) ||
step == 0)
@@ -1666,15 +1685,6 @@ static inline void *unmap_extra_space( void *ptr, size_t total_size, size_t want
}
-struct alloc_area
-{
- char *map_area_start, *map_area_end, *result;
- size_t size;
- ptrdiff_t step;
- int unix_prot;
- BOOL top_down;
-};
-
static int alloc_area_in_reserved_or_between_callback( void *start, SIZE_T size, void *arg )
{
char *intersect_start, *intersect_end;
@@ -1700,8 +1710,8 @@ static int alloc_area_in_reserved_or_between_callback( void *start, SIZE_T size,
@@ -1797,9 +1809,9 @@ static int alloc_area_in_reserved_or_between_callback( void *start, SIZE_T size,
assert(intersect_start <= intersect_end);
if (area->map_area_end - intersect_end >= area->size)
{
alloc_start = ROUND_ADDR( (char *)area->map_area_end - size, granularity_mask );
- alloc_start = ROUND_ADDR( (char *)area->map_area_end - size, align_mask );
- if ((area->result = try_map_free_area( intersect_end, alloc_start + size, area->step,
- alloc_start, area->size, area->unix_prot )))
+ alloc_start = ROUND_ADDR( (char *)area->map_area_end - area->size, align_mask );
+ if ((area->result = try_map_free_area( area, intersect_end,
+ alloc_start + size, alloc_start )))
return 1;
}
@@ -1736,8 +1746,8 @@ static int alloc_area_in_reserved_or_between_callback( void *start, SIZE_T size,
@@ -1838,8 +1850,8 @@ static int alloc_area_in_reserved_or_between_callback( void *start, SIZE_T size,
if (intersect_start - area->map_area_start >= area->size)
{
alloc_start = ROUND_ADDR( area->map_area_start + align_mask, align_mask );
- if ((area->result = try_map_free_area( area->map_area_start, intersect_start, area->step,
- area->map_area_start, area->size, area->unix_prot )))
- alloc_start, area->size, area->unix_prot )))
+ if ((area->result = try_map_free_area( area, area->map_area_start,
+ intersect_start, area->map_area_start )))
+ intersect_start, alloc_start )))
return 1;
}
@@ -1792,8 +1802,7 @@ static void *alloc_free_area_in_range( struct alloc_area *area, char *base, char
@@ -1900,8 +1912,7 @@ static void *alloc_free_area_in_range( struct alloc_area *area, char *base, char
if (start >= area->map_area_end || start < area->map_area_start)
return NULL;
@@ -128,7 +107,7 @@ index 4899fc7b443..cee739bd942 100644
}
else
{
@@ -1802,8 +1811,7 @@ static void *alloc_free_area_in_range( struct alloc_area *area, char *base, char
@@ -1911,8 +1922,7 @@ static void *alloc_free_area_in_range( struct alloc_area *area, char *base, char
|| area->map_area_end - start < area->size)
return NULL;
@@ -138,7 +117,7 @@ index 4899fc7b443..cee739bd942 100644
}
}
@@ -1813,6 +1821,7 @@ static void *alloc_free_area( void *limit, size_t size, BOOL top_down, int unix_
@@ -1922,6 +1932,7 @@ static void *alloc_free_area( void *limit, size_t size, BOOL top_down, int unix_
char *reserve_start, *reserve_end;
struct alloc_area area;
char *base, *end;
@@ -146,20 +125,9 @@ index 4899fc7b443..cee739bd942 100644
int ranges_inc;
TRACE("limit %p, size %p, top_down %#x.\n", limit, (void *)size, top_down);
@@ -1868,16 +1877,67 @@ static void *alloc_free_area( void *limit, size_t size, BOOL top_down, int unix_
{
/* range is split in two by the preloader reservation, try first part. */
if ((area.result = alloc_free_area_in_range( &area, base, reserve_start )))
- return area.result;
+ break;
/* then fall through to try second part. */
base = reserve_end;
}
}
@@ -1991,7 +2002,58 @@ static void *alloc_free_area( void *limit, size_t size, BOOL top_down, int unix_
if ((area.result = alloc_free_area_in_range( &area, base, end )))
- return area.result;
+ break;
break;
}
- return NULL;
+
@@ -217,7 +185,7 @@ index 4899fc7b443..cee739bd942 100644
}
/***********************************************************************
@@ -1931,6 +1991,17 @@ static NTSTATUS map_fixed_area( void *base, size_t size, unsigned int vprot )
@@ -2045,6 +2107,17 @@ static NTSTATUS map_fixed_area( void *base, size_t size, unsigned int vprot )
return STATUS_SUCCESS;
}
@@ -235,21 +203,20 @@ index 4899fc7b443..cee739bd942 100644
/***********************************************************************
* map_view
*
@@ -1954,7 +2025,12 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
else if (!(ptr = alloc_free_area( (void*)(get_zero_bits_mask( zero_bits )
& (UINT_PTR)user_space_limit), size, top_down, get_unix_prot( vprot ) )))
@@ -2097,7 +2170,11 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
}
else if (!(ptr = alloc_free_area( (void *)limit, size, top_down, get_unix_prot( vprot ), align_mask )))
{
- return STATUS_NO_MEMORY;
+ WARN("Allocation failed, clearing native views.\n");
+
+ clear_native_views();
+ if (!(ptr = alloc_free_area( (void*)(get_zero_bits_mask( zero_bits )
+ & (UINT_PTR)user_space_limit), size, top_down, get_unix_prot( vprot ) )))
+ if (!(ptr = alloc_free_area( (void *)limit, size, top_down, get_unix_prot( vprot ), align_mask )))
+ return STATUS_NO_MEMORY;
}
status = create_view( view_ret, ptr, size, vprot );
if (status != STATUS_SUCCESS) unmap_area( ptr, size );
@@ -3646,7 +3722,12 @@ void virtual_set_force_exec( BOOL enable )
@@ -3835,7 +3912,12 @@ void virtual_set_force_exec( BOOL enable )
WINE_RB_FOR_EACH_ENTRY( view, &views_tree, struct file_view, entry )
{
/* file mappings are always accessible */
@@ -264,5 +231,5 @@ index 4899fc7b443..cee739bd942 100644
mprotect_range( view->base, view->size, commit, 0 );
}
--
2.30.2
2.38.1

View File

@@ -1,2 +1,3 @@
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)
Depends: ntdll-Placeholders

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