Compare commits

...

30 Commits
v8.1 ... v8.3

Author SHA1 Message Date
Alistair Leslie-Hughes
575f6f67cc Release v8.3 2023-03-05 09:42:43 +11:00
Alistair Leslie-Hughes
9929ac3038 Rebase against e796002ee61bf5dfb2718e8f4fb8fa928ccdc236. 2023-03-04 09:11:01 +11:00
Alistair Leslie-Hughes
cd22a0fb15 Rebase against 10765f2956d6f9fc2d16bb2bec476b12a31786f6. 2023-03-03 14:57:42 +11:00
Alistair Leslie-Hughes
f7b671178c Added vcomp_for_dynamic_init_i8 patchset 2023-03-01 12:48:37 +11:00
Alistair Leslie-Hughes
dc43a031be Rebase against 56db5b0bf1aa6df5edbedbec03e0a1db39d6639b. 2023-03-01 11:25:57 +11:00
Alistair Leslie-Hughes
7b0d44f887 Rebase against 3fb2a5d55e948670222170075f0054a2aabf8d7e. 2023-02-25 19:56:00 +11:00
Alistair Leslie-Hughes
0611b4d10c Rebase against 4d0d7e49b9b33bba023ba67add84486ba4cc8efd. 2023-02-24 10:23:41 +11:00
Zebediah Figura
b9421d8376 ntdll-Heap_Improvements: Remove patch set.
Obviated by the low-fragmentation heap work now upstream.
2023-02-23 11:57:01 -06:00
Zebediah Figura
a11194038c Rebase against 15b176b4f4945d7abfb4adbddc7f140ba1765855. 2023-02-22 15:34:37 -06:00
Zebediah Figura
d8293544f4 patchinstall.py: Pass the wine tree to the "patch" backend. 2023-02-22 15:22:40 -06:00
Alistair Leslie-Hughes
bf7a234e0c Rebase against 2436964d5678956a362a9bef34625885442740f6. 2023-02-21 09:53:38 +11:00
Zebediah Figura
1f76f7faec patchinstall.py: Allow specifying DESTDIR= as an argument. 2023-02-18 23:52:33 -06:00
Alistair Leslie-Hughes
4d98c8839b Release v8.2 2023-02-19 09:16:13 +11:00
Alistair Leslie-Hughes
53e545fe79 Added odbc-remove-unixodbc patchset 2023-02-17 13:38:41 +11:00
Dean M Greer
996b5b4cea macOS.yml: Fix GitHub workflow 2023-02-17 01:21:49 +00:00
Zebediah Figura
c1b4af92f7 patchupdate.py: Delete.
Deprected, replaced by staging/patchinstall.py.

Maintaining the patchinstall.sh script is an annoyance, often missed when modifying patches, which then results in fixup commits. The "new" patchinstall.py script (which has been around for multiple years now) is a complete replacement, and avoids this problem by just generating the list when applying. Precomputing the list is hardly worthwhile anyway.
2023-02-16 14:37:54 -06:00
Zebediah Figura
c542e21406 patchgraph.py: Delete.
This is not nearly interesting enough to keep around.
2023-02-16 14:37:43 -06:00
Alistair Leslie-Hughes
95f5c850de Updated patchinstall.sh for python3 2023-02-16 13:23:29 +11:00
Alistair Leslie-Hughes
daff95e4a0 Rebase against df5f6f66de80085249d392be5efa085e6ee056a0. 2023-02-16 11:43:24 +11:00
Alistair Leslie-Hughes
c920a7b45f Corrected patchinstall.sh 2023-02-14 13:09:39 +11:00
Zebediah Figura
a737381889 Rebase against 25743d46f4103c7345c955b87b4134a065fb5f1d. 2023-02-13 19:27:05 -06:00
Gerald Pfeifer
3367490837 ntdll-Junction_Points: Fix build on FreeBSD 12 2023-02-13 08:21:31 +11:00
Rémi Bernon
b75b4fc0fa Fix ntdll-NtDevicePath patch hunk context. 2023-02-13 07:53:17 +11:00
Rémi Bernon
c1951fe5d2 Replaced winex11-key_translation with winex11-Fixed-scancodes. 2023-02-11 12:34:01 +11:00
Rémi Bernon
7a0d4fb5b3 Port patchupdate.py to Python 3. 2023-02-11 12:17:08 +11:00
Alistair Leslie-Hughes
c26b832223 Added dmime-load-wave patchset 2023-02-11 11:20:39 +11:00
Alistair Leslie-Hughes
0159beff44 Added wined3d-atomic_minmax_merge patchset 2023-02-11 11:20:39 +11:00
Zebediah Figura
87f3369577 Rebase against 9070f0d572e36645f5e5764ef40472f158513d48. 2023-02-10 17:55:25 -06:00
Alistair Leslie-Hughes
86a67397f7 Rebase against a958b5aebfeed4538a4091f49996ae30ee9803fc. 2023-02-07 13:58:00 +11:00
Etienne JUVIGNY
f2f8b949b1 patchinstall.py: Port to python 3. 2023-02-03 16:01:25 -06:00
106 changed files with 9307 additions and 7779 deletions

View File

@@ -33,12 +33,13 @@ jobs:
mkdir $GITHUB_WORKSPACE/wine
cd wine
git init
git fetch git://source.winehq.org/git/wine.git $($GITHUB_WORKSPACE/patches/patchinstall.sh --upstream-commit) --depth=1
git checkout $($GITHUB_WORKSPACE/patches/patchinstall.sh --upstream-commit)
git fetch git://source.winehq.org/git/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
git checkout $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit)
- name: Run patchinstall.sh --all
- name: Run patchinstall.py --all
run: |
$GITHUB_WORKSPACE/patches/patchinstall.sh DESTDIR=$GITHUB_WORKSPACE/wine --all
cd wine
$GITHUB_WORKSPACE/staging/patchinstall.py DESTDIR=. --all
- name: Configure wine64
env:

1
.gitignore vendored
View File

@@ -1,3 +1,2 @@
staging/wine
*.pyc
.patchupdate.cache

View File

@@ -1,4 +1,4 @@
From 8c78d1203c965927d0a0e6fcde31dd651cc704db Mon Sep 17 00:00:00 2001
From f78fc333748a6c4f664bb10ee2115c86690b3b16 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.
@@ -22,7 +22,7 @@ index 22be2612eeb..2e11bb2b62d 100644
C_SRCS = \
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 404c7c11dbb..e0779e4e3a7 100644
index 3c1e225e195..4468f7fa4ed 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -1445,6 +1445,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
@@ -30,9 +30,9 @@ index 404c7c11dbb..e0779e4e3a7 100644
ret = search_unix_path(filename, process_getenv(pcs, L"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);
|| search_dll_path(pcs, filename, IMAGE_FILE_MACHINE_UNKNOWN, elf_load_file_cb, &load_elf);
}
--
2.34.1
2.39.1

View File

@@ -0,0 +1,100 @@
From 4b20338821a19304650d1acc1229b0e8615896bc Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 3 Aug 2022 16:25:11 +1000
Subject: [PATCH] dmime: Store WAVE data when Loading.
---
dlls/dmime/segment.c | 56 ++++++++++++++++++++++++++++++++++++++++----
1 file changed, 52 insertions(+), 4 deletions(-)
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
index bf44c5e73b3..6bf9f3abf0c 100644
--- a/dlls/dmime/segment.c
+++ b/dlls/dmime/segment.c
@@ -33,6 +33,10 @@ typedef struct IDirectMusicSegment8Impl {
DMUS_IO_SEGMENT_HEADER header;
IDirectMusicGraph *pGraph;
struct list Tracks;
+
+ PCMWAVEFORMAT wave_format;
+ void *wave_data;
+ int data_size;
} IDirectMusicSegment8Impl;
IDirectMusicSegment8Impl *create_segment(void);
@@ -86,6 +90,9 @@ static ULONG WINAPI IDirectMusicSegment8Impl_Release(IDirectMusicSegment8 *iface
TRACE("(%p) ref=%ld\n", This, ref);
if (!ref) {
+ if (This->wave_data)
+ free(This->wave_data);
+
HeapFree(GetProcessHeap(), 0, This);
DMIME_UnlockModule();
}
@@ -818,6 +825,49 @@ static inline IDirectMusicSegment8Impl *impl_from_IPersistStream(IPersistStream
return CONTAINING_RECORD(iface, IDirectMusicSegment8Impl, dmobj.IPersistStream_iface);
}
+static HRESULT parse_wave_form(IDirectMusicSegment8Impl *This, IStream *stream, const struct chunk_entry *riff)
+{
+ HRESULT hr;
+ struct chunk_entry chunk = {.parent = riff};
+
+ TRACE("Parsing segment wave in %p: %s\n", stream, debugstr_chunk(riff));
+
+ while ((hr = stream_next_chunk(stream, &chunk)) == S_OK) {
+ switch (chunk.id) {
+ case mmioFOURCC('f','m','t',' '): {
+ if (FAILED(hr = stream_chunk_get_data(stream, &chunk, &This->wave_format, chunk.size)))
+ return hr;
+ TRACE("Wave Format tag %d\n", This->wave_format.wf.wFormatTag);
+ break;
+ }
+ case mmioFOURCC('d','a','t','a'): {
+ TRACE("Wave Data size %lu\n", chunk.size);
+ This->wave_data = malloc(chunk.size);
+ This->data_size = chunk.size;
+ if (!This->wave_data)
+ return E_OUTOFMEMORY;
+ if (FAILED(hr = stream_chunk_get_data(stream, &chunk, This->wave_data, chunk.size)))
+ return hr;
+ break;
+ }
+ case FOURCC_LIST: {
+ FIXME("Skipping LIST tag\n");
+ break;
+ }
+ case mmioFOURCC('I','S','F','T'): {
+ FIXME("Skipping ISFT tag\n");
+ break;
+ }
+ case mmioFOURCC('f','a','c','t'): {
+ FIXME("Skipping fact tag\n");
+ break;
+ }
+ }
+ }
+
+ return S_OK;
+}
+
static HRESULT WINAPI seg_IPersistStream_Load(IPersistStream *iface, IStream *stream)
{
IDirectMusicSegment8Impl *This = impl_from_IPersistStream(iface);
@@ -847,10 +897,8 @@ static HRESULT WINAPI seg_IPersistStream_Load(IPersistStream *iface, IStream *st
if (riff.type == DMUS_FOURCC_SEGMENT_FORM)
hr = parse_segment_form(This, stream, &riff);
- else {
- FIXME("WAVE form loading not implemented\n");
- hr = S_OK;
- }
+ else
+ hr = parse_wave_form(This, stream, &riff);
return hr;
}
--
2.39.1

View File

@@ -0,0 +1,157 @@
From f58dbcdfedf4d5d78d586d54f507c647e58379c8 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 2 Dec 2022 14:41:30 +1100
Subject: [PATCH] dmime: Implement IDirectMusicSegment8 Download
---
dlls/dmime/dmime_private.h | 2 +
dlls/dmime/performance.c | 7 +++
dlls/dmime/segment.c | 87 ++++++++++++++++++++++++++++++++++++--
3 files changed, 93 insertions(+), 3 deletions(-)
diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
index 4159abffa99..030aab50094 100644
--- a/dlls/dmime/dmime_private.h
+++ b/dlls/dmime/dmime_private.h
@@ -71,6 +71,8 @@ extern void set_audiopath_perf_pointer(IDirectMusicAudioPath*,IDirectMusicPerfor
extern void set_audiopath_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffer*) DECLSPEC_HIDDEN;
extern void set_audiopath_primary_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffer*) DECLSPEC_HIDDEN;
+extern IDirectSound *get_dsound_interface(IDirectMusicPerformance8*) DECLSPEC_HIDDEN;
+
/*****************************************************************************
* Auxiliary definitions
*/
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
index d69a27540d6..5578c3e523b 100644
--- a/dlls/dmime/performance.c
+++ b/dlls/dmime/performance.c
@@ -252,6 +252,13 @@ static inline IDirectMusicPerformance8Impl *impl_from_IDirectMusicPerformance8(I
return CONTAINING_RECORD(iface, IDirectMusicPerformance8Impl, IDirectMusicPerformance8_iface);
}
+IDirectSound *get_dsound_interface(IDirectMusicPerformance8* iface)
+{
+ IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+ return This->dsound;
+}
+
+
/* IDirectMusicPerformance8 IUnknown part: */
static HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface(IDirectMusicPerformance8 *iface,
REFIID riid, void **ppv)
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
index 6bf9f3abf0c..0ea0c15c5e0 100644
--- a/dlls/dmime/segment.c
+++ b/dlls/dmime/segment.c
@@ -37,6 +37,7 @@ typedef struct IDirectMusicSegment8Impl {
PCMWAVEFORMAT wave_format;
void *wave_data;
int data_size;
+ IDirectSoundBuffer *buffer;
} IDirectMusicSegment8Impl;
IDirectMusicSegment8Impl *create_segment(void);
@@ -90,6 +91,8 @@ static ULONG WINAPI IDirectMusicSegment8Impl_Release(IDirectMusicSegment8 *iface
TRACE("(%p) ref=%ld\n", This, ref);
if (!ref) {
+ if (This->buffer)
+ IDirectSoundBuffer_Release(This->buffer);
if (This->wave_data)
free(This->wave_data);
@@ -559,9 +562,87 @@ static HRESULT WINAPI IDirectMusicSegment8Impl_Compose(IDirectMusicSegment8 *ifa
static HRESULT WINAPI IDirectMusicSegment8Impl_Download(IDirectMusicSegment8 *iface,
IUnknown *pAudioPath)
{
- IDirectMusicSegment8Impl *This = impl_from_IDirectMusicSegment8(iface);
- FIXME("(%p, %p): stub\n", This, pAudioPath);
- return S_OK;
+ IDirectMusicSegment8Impl *This = impl_from_IDirectMusicSegment8(iface);
+ IDirectMusicPerformance8 *perf;
+ IDirectMusicAudioPath *audio;
+ IDirectSound *dsound;
+ HRESULT hr;
+ DSBUFFERDESC dsbd = {.dwSize = sizeof(dsbd)};
+ void *data;
+ DWORD size;
+ DWORD buffer = 0;
+
+ TRACE("(%p, %p)\n", This, pAudioPath);
+
+ if (!pAudioPath)
+ return E_INVALIDARG;
+
+ if (This->buffer)
+ {
+ TRACE("Using Cached buffer\n");
+ return S_OK;
+ }
+
+ /* pAudioPath can either be IDirectMusicAudioPath or IDirectMusicPerformance */
+ hr = IUnknown_QueryInterface(pAudioPath, &IID_IDirectMusicPerformance8, (void**)&perf);
+ if (FAILED(hr))
+ {
+ TRACE("Checking for IDirectMusicAudioPath interface\n");
+ hr = IUnknown_QueryInterface(pAudioPath, &IID_IDirectMusicAudioPath, (void**)&audio);
+ if (FAILED(hr))
+ {
+ WARN("Cannot query for IDirectMusicAudioPath\n");
+ return E_INVALIDARG;
+ }
+
+ IDirectMusicAudioPath_GetObjectInPath(audio, DMUS_PCHANNEL_ALL, DMUS_PATH_PERFORMANCE, buffer, &GUID_NULL,
+ 0, &IID_IDirectMusicPerformance, (void**)&perf);
+ IDirectMusicAudioPath_Release(audio);
+ }
+
+ if (!perf)
+ {
+ ERR("Failed to get IDirectMusicPerformance interface\n");
+ return E_INVALIDARG;
+ }
+
+ dsound = get_dsound_interface(perf);
+ if (!dsound)
+ {
+ ERR("Failed get_dsound_interface\n");
+ return E_INVALIDARG;
+ }
+
+ if (This->data_size == 0)
+ {
+ FIXME("No wave data skipping\n");
+ return S_OK;
+ }
+
+ dsbd.dwBufferBytes = This->data_size;
+ dsbd.lpwfxFormat = (WAVEFORMATEX*)&This->wave_format;
+
+ hr = IDirectSound_CreateSoundBuffer(dsound, &dsbd, &This->buffer, NULL);
+ if (FAILED(hr))
+ {
+ ERR("IDirectSound_CreateSoundBuffer failed 0x%08lx\n", hr);
+ return E_INVALIDARG;
+ }
+
+ TRACE("CreateSoundBuffer successful\n");
+
+ hr = IDirectSoundBuffer_Lock(This->buffer, 0, This->data_size, &data, &size, NULL, 0, 0);
+ TRACE("IDirectSoundBuffer_Lock hr 0x%08lx\n", hr);
+
+ memcpy(data, This->wave_data, This->data_size);
+
+ hr = IDirectSoundBuffer_Unlock(This->buffer, data, This->data_size, NULL, 0);
+ TRACE("IDirectSoundBuffer_Unlock hr 0x%08lx\n", hr);
+
+ /*hr = IDirectSoundBuffer_Play(This->buffer, 0, 0, 0);
+ TRACE("IDirectSoundBuffer_Play hr 0x%08lx\n", hr);*/
+
+ return S_OK;
}
static HRESULT WINAPI IDirectMusicSegment8Impl_Unload(IDirectMusicSegment8 *iface,
--
2.39.1

View File

@@ -0,0 +1,81 @@
From 8ef2197cd4c77bf562ab5b83f2a137ae565bc22d Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 12 Dec 2022 15:20:10 +1100
Subject: [PATCH 3/3] dmime: Play a sound in IDirectMusicPerformance8
PlaySegmentEx
---
dlls/dmime/dmime_private.h | 1 +
dlls/dmime/performance.c | 25 +++++++++++++++++++------
dlls/dmime/segment.c | 6 ++++++
3 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
index 030aab50094..d09aba02a5c 100644
--- a/dlls/dmime/dmime_private.h
+++ b/dlls/dmime/dmime_private.h
@@ -72,6 +72,7 @@ extern void set_audiopath_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffe
extern void set_audiopath_primary_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffer*) DECLSPEC_HIDDEN;
extern IDirectSound *get_dsound_interface(IDirectMusicPerformance8*) DECLSPEC_HIDDEN;
+extern IDirectSoundBuffer *get_segment_buffer(IDirectMusicSegment8 *iface) DECLSPEC_HIDDEN;
/*****************************************************************************
* Auxiliary definitions
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
index 5578c3e523b..03e59e95af3 100644
--- a/dlls/dmime/performance.c
+++ b/dlls/dmime/performance.c
@@ -1043,13 +1043,26 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegmentEx(IDirectMusicPer
__int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState, IUnknown *pFrom,
IUnknown *pAudioPath)
{
- IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+ IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+ IDirectMusicSegment8 *segment;
+ IDirectSoundBuffer *buffer;
+ HRESULT hr;
- FIXME("(%p, %p, %p, %p, %ld, 0x%s, %p, %p, %p): stub\n", This, pSource, pwzSegmentName,
- pTransition, dwFlags, wine_dbgstr_longlong(i64StartTime), ppSegmentState, pFrom, pAudioPath);
- if (ppSegmentState)
- return create_dmsegmentstate(&IID_IDirectMusicSegmentState,(void**)ppSegmentState);
- return S_OK;
+ FIXME("(%p, %p, %p, %p, %ld, 0x%s, %p, %p, %p): semi-stub\n", This, pSource, pwzSegmentName,
+ pTransition, dwFlags, wine_dbgstr_longlong(i64StartTime), ppSegmentState, pFrom, pAudioPath);
+
+ hr = IUnknown_QueryInterface(pSource, &IID_IDirectMusicSegment8, (void**)&segment);
+ if (FAILED(hr))
+ return hr;
+
+ buffer = get_segment_buffer(segment);
+
+ if (segment)
+ hr = IDirectSoundBuffer_Play(buffer, 0, 0, 0);
+
+ if (ppSegmentState)
+ return create_dmsegmentstate(&IID_IDirectMusicSegmentState,(void**)ppSegmentState);
+ return S_OK;
}
static HRESULT WINAPI IDirectMusicPerformance8Impl_StopEx(IDirectMusicPerformance8 *iface,
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
index dbf2f8203d8..9213fbf4a4c 100644
--- a/dlls/dmime/segment.c
+++ b/dlls/dmime/segment.c
@@ -45,6 +45,12 @@ static inline IDirectMusicSegment8Impl *impl_from_IDirectMusicSegment8(IDirectMu
return CONTAINING_RECORD(iface, IDirectMusicSegment8Impl, IDirectMusicSegment8_iface);
}
+IDirectSoundBuffer *get_segment_buffer(IDirectMusicSegment8 *iface)
+{
+ IDirectMusicSegment8Impl *This = impl_from_IDirectMusicSegment8(iface);
+ return This->buffer;
+}
+
static HRESULT WINAPI IDirectMusicSegment8Impl_QueryInterface(IDirectMusicSegment8 *iface,
REFIID riid, void **ret_iface)
{
--
2.38.1

View File

@@ -0,0 +1,13 @@
Fixes: [48220] dmime: Handle basic loading of Wave files and playing them.
Fixes: [61322] dmine: No Sound in Black Rockman Shooter.
Fixes: [34751] dmime: Aura: Fate of the Ages: sounds aren't played, but music works fine
Fixes: [9027] dmime: No sound for rise of nations - all versions.
# Also
# - Cloning Clyde demo
# Doesnt fix
# The following are known not to work, at the moment.
# [31586] : Myst sounds (Voices)
# [30969] : Tron 2.0 Background music
# [32896] : Serious Sam: The Random Encounter

View File

@@ -1,30 +1,29 @@
From da59fcb896bc204ea0ea1d866eeddef0c9b962c4 Mon Sep 17 00:00:00 2001
From d09ac9a348309f956a2f3985a1b465b51b6e174c Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 28 Mar 2015 08:18:10 +0100
Subject: [PATCH] dsound: Apply filters before sound is multiplied to speakers.
Based on a patch by Mark Harmstone.
---
dlls/dsound/dsound.c | 2 +
dlls/dsound/dsound.c | 1 +
dlls/dsound/dsound_private.h | 4 +-
dlls/dsound/mixer.c | 109 ++++++++++++++++++++++++-----------
3 files changed, 80 insertions(+), 35 deletions(-)
dlls/dsound/mixer.c | 112 ++++++++++++++++++++++++-----------
3 files changed, 81 insertions(+), 36 deletions(-)
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
index 346cc4ceca3..e869c4dd251 100644
index 0b8edaaaf06..bdf3a824511 100644
--- a/dlls/dsound/dsound.c
+++ b/dlls/dsound/dsound.c
@@ -234,6 +234,8 @@ static ULONG DirectSoundDevice_Release(DirectSoundDevice * device)
@@ -234,6 +234,7 @@ static ULONG DirectSoundDevice_Release(DirectSoundDevice * device)
if(device->mmdevice)
IMMDevice_Release(device->mmdevice);
CloseHandle(device->sleepev);
+
+ HeapFree(GetProcessHeap(), 0, device->dsp_buffer);
HeapFree(GetProcessHeap(), 0, device->tmp_buffer);
HeapFree(GetProcessHeap(), 0, device->cp_buffer);
HeapFree(GetProcessHeap(), 0, device->buffer);
+ free(device->dsp_buffer);
free(device->tmp_buffer);
free(device->cp_buffer);
free(device->buffer);
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index f89588de4d9..d4e74ed0e82 100644
index 124a4311b4c..fe39ca221fa 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -89,8 +89,8 @@ struct DirectSoundDevice
@@ -39,7 +38,7 @@ index f89588de4d9..d4e74ed0e82 100644
DSVOLUMEPAN volpan;
diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c
index 50816b1a582..ddab45893ac 100644
index c26b19ea8c1..68a45c46d1e 100644
--- a/dlls/dsound/mixer.c
+++ b/dlls/dsound/mixer.c
@@ -283,10 +283,9 @@ static inline float get_current_sample(const IDirectSoundBufferImpl *dsb,
@@ -150,7 +149,7 @@ index 50816b1a582..ddab45893ac 100644
/**
* Mix at most the given amount of data into the allocated temporary buffer
* of the given secondary buffer, starting from the dsb's first currently
@@ -497,34 +511,63 @@ static inline DWORD DSOUND_BufPtrDiff(DWORD buflen, DWORD ptr1, DWORD ptr2)
@@ -497,31 +511,61 @@ static inline DWORD DSOUND_BufPtrDiff(DWORD buflen, DWORD ptr1, DWORD ptr2)
*/
static void DSOUND_MixToTemporary(IDirectSoundBufferImpl *dsb, DWORD frames)
{
@@ -165,21 +164,20 @@ index 50816b1a582..ddab45893ac 100644
- if (dsb->device->tmp_buffer_len < size_bytes || !dsb->device->tmp_buffer)
- {
- dsb->device->tmp_buffer_len = size_bytes;
- dsb->device->tmp_buffer = realloc(dsb->device->tmp_buffer, size_bytes);
- }
- if(dsb->put_aux == putieee32_sum)
- memset(dsb->device->tmp_buffer, 0, dsb->device->tmp_buffer_len);
+ put = dsb->put;
+ ostride = dsb->device->pwfx->nChannels * sizeof(float);
+ size_bytes = frames * ostride;
+
+ if (dsb->device->tmp_buffer_len < size_bytes || !dsb->device->tmp_buffer) {
if (dsb->device->tmp_buffer)
dsb->device->tmp_buffer = HeapReAlloc(GetProcessHeap(), 0, dsb->device->tmp_buffer, size_bytes);
else
dsb->device->tmp_buffer = HeapAlloc(GetProcessHeap(), 0, size_bytes);
+ dsb->device->tmp_buffer_len = size_bytes;
}
- if(dsb->put_aux == putieee32_sum)
- memset(dsb->device->tmp_buffer, 0, dsb->device->tmp_buffer_len);
-
- cp_fields(dsb, frames, &dsb->freqAccNum);
+ if (dsb->device->tmp_buffer_len < size_bytes || !dsb->device->tmp_buffer)
+ {
+ dsb->device->tmp_buffer_len = size_bytes;
+ dsb->device->tmp_buffer = realloc(dsb->device->tmp_buffer, size_bytes);
+ }
+ if(dsb->put_aux == putieee32_sum)
+ memset(dsb->device->tmp_buffer, 0, dsb->device->tmp_buffer_len);
+
@@ -234,5 +232,5 @@ index 50816b1a582..ddab45893ac 100644
static void DSOUND_MixerVol(const IDirectSoundBufferImpl *dsb, INT frames)
--
2.35.1
2.39.2

View File

@@ -1,4 +1,4 @@
From 5d29a2de174042ce7bdd52d92337591933e0f761 Mon Sep 17 00:00:00 2001
From 42c58e406220e9351337b079ae44364fbc39365d Mon Sep 17 00:00:00 2001
From: Mark Harmstone <mark@harmstone.com>
Date: Fri, 27 Mar 2015 20:58:37 +0000
Subject: [PATCH] dsound: Add EAX init and free stubs.
@@ -10,10 +10,10 @@ Subject: [PATCH] dsound: Add EAX init and free stubs.
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index e8b3fb4a832..28f2e95994e 100644
index 22b23c9f877..72e96765883 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1153,6 +1153,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
@@ -1152,6 +1152,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
DSOUND_RecalcVolPan(&(dsb->volpan));
InitializeSRWLock(&dsb->lock);
@@ -22,17 +22,17 @@ index e8b3fb4a832..28f2e95994e 100644
/* register buffer */
err = DirectSoundDevice_AddBuffer(device, dsb);
@@ -1194,6 +1196,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
HeapFree(GetProcessHeap(), 0, This->filters);
@@ -1193,6 +1195,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
free(This->filters);
}
+ free_eax_buffer(This);
+
TRACE("(%p) released\n", This);
HeapFree(GetProcessHeap(), 0, This);
free(This);
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 267b2c044bc..c906eb2adb1 100644
index 09566b28a12..703b5da8225 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -240,6 +240,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
@@ -97,5 +97,5 @@ index 03b6e0a9813..91438efc335 100644
HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
--
2.35.1
2.39.2

View File

@@ -1,4 +1,4 @@
From 3760db8daceee555842425400af01de2075b4568 Mon Sep 17 00:00:00 2001
From 673e9f32e39fce78a02f6519a435051ffec3664d Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 4 Apr 2015 21:09:18 +0200
Subject: [PATCH] dsound: Various improvements to EAX support.
@@ -24,19 +24,19 @@ the buffers).
5 files changed, 37 insertions(+), 39 deletions(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index 6b7414d34ff..b1efa0d3012 100644
index 72e96765883..bdb93657017 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1213,7 +1213,7 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
@@ -1223,7 +1223,7 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
VOID *committedbuff;
TRACE("(%p,%p,%p)\n", device, ppdsb, pdsb);
- dsb = HeapAlloc(GetProcessHeap(),0,sizeof(*dsb));
+ dsb = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(*dsb));
- dsb = malloc(sizeof(*dsb));
+ dsb = calloc(1, sizeof(*dsb));
if (dsb == NULL) {
WARN("out of memory\n");
*ppdsb = NULL;
@@ -1261,6 +1261,8 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
@@ -1271,6 +1271,8 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
InitializeSRWLock(&dsb->lock);
@@ -46,7 +46,7 @@ index 6b7414d34ff..b1efa0d3012 100644
hres = DirectSoundDevice_AddBuffer(device, dsb);
if (hres != DS_OK) {
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
index 91fa94b943e..a0931325ebc 100644
index bdf3a824511..4df26e93c6e 100644
--- a/dlls/dsound/dsound.c
+++ b/dlls/dsound/dsound.c
@@ -182,6 +182,8 @@ static HRESULT DirectSoundDevice_Create(DirectSoundDevice ** ppDevice)
@@ -71,10 +71,10 @@ index a650108f570..a555a75e458 100644
float *SampleBuffer;
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 43e62626161..065fe820055 100644
index 9131fa8792e..f2b2c353643 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -239,6 +239,7 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
@@ -240,6 +240,7 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData,
ULONG cbPropData) DECLSPEC_HIDDEN;
@@ -83,7 +83,7 @@ index 43e62626161..065fe820055 100644
void init_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN;
void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count) DECLSPEC_HIDDEN;
diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c
index a05b00e1c02..ef802b95a7d 100644
index 5f2b8ef07e2..2244565897b 100644
--- a/dlls/dsound/eax.c
+++ b/dlls/dsound/eax.c
@@ -114,6 +114,8 @@ static const float LATE_LINE_MULTIPLIER = 4.0f;
@@ -244,5 +244,5 @@ index a05b00e1c02..ef802b95a7d 100644
switch (dwPropID) {
case DSPROPERTY_EAXBUFFER_ALL:
--
2.33.0
2.39.2

View File

@@ -1,4 +1,4 @@
From b332f5a5dd03b7d71515a2fddefa787da3fb7b5e Mon Sep 17 00:00:00 2001
From 9e4371e8d0aaf8b4c5578c41adf8e1dd4436b1f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 9 Jan 2016 16:57:49 +0100
Subject: [PATCH] explorer: Create CurrentControlSet\Control\Video registry key
@@ -14,7 +14,7 @@ Signed-off-by: Michael MĂĽller <michael@fds-team.de>
2 files changed, 16 insertions(+)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c
index dfadd13ea8c..b3e5888da92 100644
index 480e96ef6ee..49aacc905b1 100644
--- a/dlls/advapi32/tests/registry.c
+++ b/dlls/advapi32/tests/registry.c
@@ -1318,6 +1318,13 @@ static void test_reg_create_key(void)
@@ -32,12 +32,12 @@ index dfadd13ea8c..b3e5888da92 100644
hkey1 = NULL;
ret = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software", 0, NULL, 0, KEY_READ|KEY_WOW64_32KEY, NULL, &hkey1, NULL);
diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index 94d178880a8..95f06e50b7d 100644
index 81eb0d1d01b..f742cd6d30b 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -792,6 +792,11 @@ static BOOL get_default_enable_shell( const WCHAR *name )
@@ -878,6 +878,11 @@ static BOOL get_default_enable_shell( const WCHAR *name )
static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid )
static HMODULE load_graphics_driver( const WCHAR *driver, GUID *guid )
{
+ static const WCHAR video_keyW[] = {
+ 'S','y','s','t','e','m','\\',
@@ -47,7 +47,7 @@ index 94d178880a8..95f06e50b7d 100644
static const WCHAR device_keyW[] = {
'S','y','s','t','e','m','\\',
'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
@@ -859,6 +864,10 @@ static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid )
@@ -947,6 +952,10 @@ static HMODULE load_graphics_driver( const WCHAR *driver, GUID *guid )
TRACE( "display %s driver %s\n", debugstr_guid(guid), debugstr_w(libname) );
@@ -59,5 +59,5 @@ index 94d178880a8..95f06e50b7d 100644
guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
--
2.30.2
2.39.2

View File

@@ -1,4 +1,4 @@
From 8b6a7baacf0a26c7de7524c5f6da37bf4f4c1120 Mon Sep 17 00:00:00 2001
From bc1d0962b58a45949c91367e84e6f71beb9f698b Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 30 Aug 2021 15:16:06 +1000
Subject: [PATCH] ntoskrnl.exe: Add FltBuildDefaultSecurityDescriptor test
@@ -23,7 +23,7 @@ index ab1db85adbb..9c89e44e70a 100644
driver2_IMPORTS = winecrt0 ntoskrnl hal
driver2_EXTRADLLFLAGS = -nodefaultlibs -nostartfiles -Wl,--subsystem,native
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index de61ed64fa4..a0cdbf0878a 100644
index 18f2920759d..569007d435e 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -32,6 +32,7 @@
@@ -34,7 +34,7 @@ index de61ed64fa4..a0cdbf0878a 100644
#include "driver.h"
@@ -2338,6 +2339,69 @@ static void test_default_modules(void)
@@ -2374,6 +2375,69 @@ static void test_default_modules(void)
ok(dxgmms1, "Failed to find dxgmms1.sys\n");
}
@@ -104,14 +104,14 @@ index de61ed64fa4..a0cdbf0878a 100644
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack)
{
void *buffer = irp->AssociatedIrp.SystemBuffer;
@@ -2382,6 +2446,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
test_dpc();
@@ -2419,6 +2483,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
test_process_memory(test_input);
test_permanence();
test_driver_object_extension();
+ test_default_security();
IoMarkIrpPending(irp);
IoQueueWorkItem(work_item, main_test_task, DelayedWorkQueue, irp);
--
2.35.1
2.39.2

View File

@@ -1,4 +1,4 @@
From f2347ae7216626d248cfaf9445862561b2b5eef7 Mon Sep 17 00:00:00 2001
From d1d83243555801226876f651b6f3304d3e595ae4 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 1 Jul 2019 09:58:55 +1000
Subject: [PATCH] loader: Add Keyboard Layouts registry enteries.
@@ -9,7 +9,7 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
1 file changed, 209 insertions(+)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index ff601e41b26..6ffb8c56d87 100644
index d5f943861a8..b07843ff237 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -63,6 +63,7 @@ AddReg=\
@@ -20,7 +20,7 @@ index ff601e41b26..6ffb8c56d87 100644
MCI,\
Misc,\
OLE,\
@@ -87,6 +88,7 @@ AddReg=\
@@ -86,6 +87,7 @@ AddReg=\
Debugger,\
DirectX,\
Fonts,\
@@ -28,7 +28,7 @@ index ff601e41b26..6ffb8c56d87 100644
MCI,\
Misc,\
OLE,\
@@ -113,6 +115,7 @@ AddReg=\
@@ -111,6 +113,7 @@ AddReg=\
Debugger,\
DirectX,\
Fonts,\
@@ -36,15 +36,15 @@ index ff601e41b26..6ffb8c56d87 100644
MCI,\
Misc,\
OLE,\
@@ -160,6 +163,7 @@ AddReg=\
CurrentVersionWow64,\
@@ -156,6 +159,7 @@ AddReg=\
CurrentVersionWow64.ntx86,\
Debugger,\
DirectX,\
+ KeyboardLayouts,\
MCI,\
Misc,\
Tapi,\
@@ -597,6 +601,211 @@ HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\ftp\UserChoic
@@ -628,6 +632,211 @@ HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\ftp\UserChoic
HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice,"ProgId",,"http"
HKCU,Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice,"ProgId",,"https"
@@ -257,5 +257,5 @@ index ff601e41b26..6ffb8c56d87 100644
HKLM,"Software\Microsoft\OLE","EnableDCOM",,"Y"
HKLM,"Software\Microsoft\OLE","EnableRemoteConnect",,"N"
--
2.35.1
2.39.2

View File

@@ -1,4 +1,4 @@
From c1ecb277d4b77d59bd113a530bea556c356f81cc Mon Sep 17 00:00:00 2001
From be7001f58850fb46ee07e9b4fba310c64157ee0f Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 9 Jul 2019 14:13:28 +1000
Subject: [PATCH] user32: Do not enumerate the registry in
@@ -13,7 +13,7 @@ not the complete list from the registry.
3 files changed, 36 insertions(+), 33 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index 3b0a13842c8..2027ce10358 100644
index 2f4dc06f6ce..7345b78eaeb 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -494,7 +494,6 @@ BOOL WINAPI UnloadKeyboardLayout( HKL layout )
@@ -21,14 +21,14 @@ index 3b0a13842c8..2027ce10358 100644
}
-
static DWORD CALLBACK devnotify_window_callback(HANDLE handle, DWORD flags, DEV_BROADCAST_HDR *header)
static DWORD CALLBACK devnotify_window_callbackW(HANDLE handle, DWORD flags, DEV_BROADCAST_HDR *header)
{
SendMessageTimeoutW(handle, WM_DEVICECHANGE, flags, (LPARAM)header, SMTO_ABORTIFHUNG, 2000, NULL);
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index f8b40099091..6551367788c 100644
index ee39b11fc12..35670ca7538 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -4875,6 +4875,40 @@ static void test_EnableMouseInPointer( char **argv, BOOL enable )
@@ -4899,6 +4899,40 @@ static void test_EnableMouseInPointer( char **argv, BOOL enable )
CloseHandle( info.hProcess );
}
@@ -69,7 +69,7 @@ index f8b40099091..6551367788c 100644
START_TEST(input)
{
char **argv;
@@ -4925,6 +4959,7 @@ START_TEST(input)
@@ -4949,6 +4983,7 @@ START_TEST(input)
test_GetRawInputBuffer();
test_RegisterRawInputDevices();
test_rawinput(argv[0]);
@@ -78,10 +78,10 @@ index f8b40099091..6551367788c 100644
if(pGetMouseMovePointsEx)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index 36f7404b296..bdbd24b5695 100644
index 36f2a45f4ef..bf4e871d107 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -934,11 +934,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
@@ -1187,11 +1187,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
*/
UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
{
@@ -94,7 +94,7 @@ index 36f7404b296..bdbd24b5695 100644
HKL layout;
TRACE_(keyboard)( "size %d, layouts %p.\n", size, layouts );
@@ -952,33 +948,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
@@ -1205,33 +1201,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
if (size && layouts)
{
layouts[count - 1] = layout;
@@ -129,5 +129,5 @@ index 36f7404b296..bdbd24b5695 100644
return count;
--
2.39.1
2.39.2

View File

@@ -1,4 +1,4 @@
From 3bde485a0dfb5626b079eec3a92cedcbcafa5d40 Mon Sep 17 00:00:00 2001
From eb96135501ef2822072e8f774868dd55ab3935ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 3 Apr 2017 05:30:27 +0200
Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
@@ -109,7 +109,7 @@ index 365f4465fc7..aca2b0f24cb 100644
test_dll_file( "kernel32.dll" );
test_dll_file( "advapi32.dll" );
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index b96cb862c93..aade2ab95d4 100644
index cbd2fa2d384..693ba94dc71 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -129,6 +129,9 @@ struct file_id
@@ -156,7 +156,7 @@ index b96cb862c93..aade2ab95d4 100644
/*************************************************************************
* get_modref
*
@@ -1471,7 +1501,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name
@@ -1477,7 +1507,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name
&wm->ldr.InLoadOrderLinks);
InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList,
&wm->ldr.InMemoryOrderLinks);
@@ -169,7 +169,7 @@ index b96cb862c93..aade2ab95d4 100644
if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT))
{
@@ -2149,6 +2184,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
@@ -2155,6 +2190,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
/* the module has only be inserted in the load & memory order lists */
RemoveEntryList(&wm->ldr.InLoadOrderLinks);
RemoveEntryList(&wm->ldr.InMemoryOrderLinks);
@@ -177,7 +177,7 @@ index b96cb862c93..aade2ab95d4 100644
/* FIXME: there are several more dangling references
* left. Including dlls loaded by this dll before the
@@ -3747,6 +3783,7 @@ static void free_modref( WINE_MODREF *wm )
@@ -3796,6 +3832,7 @@ static void free_modref( WINE_MODREF *wm )
RemoveEntryList(&wm->ldr.InLoadOrderLinks);
RemoveEntryList(&wm->ldr.InMemoryOrderLinks);
@@ -185,17 +185,17 @@ index b96cb862c93..aade2ab95d4 100644
if (wm->ldr.InInitializationOrderLinks.Flink)
RemoveEntryList(&wm->ldr.InInitializationOrderLinks);
@@ -4113,6 +4150,7 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
if (!imports_fixup_done)
{
MEMORY_BASIC_INFORMATION meminfo;
+ int i;
ANSI_STRING func_name;
@@ -4167,6 +4204,7 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
ANSI_STRING ctrl_routine = RTL_CONSTANT_STRING( "CtrlRoutine" );
WINE_MODREF *kernel32;
PEB *peb = NtCurrentTeb()->Peb;
@@ -4134,6 +4172,10 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
sizeof(peb->TlsExpansionBitmapBits) * 8 );
RtlSetBits( peb->TlsBitmap, 0, 1 ); /* TLS index 0 is reserved and should be initialized to NULL. */
+ unsigned int i;
NtQueryVirtualMemory( GetCurrentProcess(), LdrInitializeThunk, MemoryBasicInformation,
&meminfo, sizeof(meminfo), NULL );
@@ -4184,6 +4222,10 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
/* TLS index 0 is always reserved, and wow64 reserves extra TLS entries */
RtlSetBits( peb->TlsBitmap, 0, NtCurrentTeb()->WowTebOffset ? WOW64_TLS_MAX_NUMBER : 1 );
+ /* initialize hash table */
+ for (i = 0; i < HASH_MAP_SIZE; i++)
@@ -205,5 +205,5 @@ index b96cb862c93..aade2ab95d4 100644
load_global_options();
version_init();
--
2.38.1
2.39.2

View File

@@ -1,88 +0,0 @@
From e46de2c7f78d1b8b336868276a23f4ca1d191599 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 22 Jul 2017 06:41:53 +0200
Subject: ntdll: Add helper function to delete free blocks.
---
dlls/ntdll/heap.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c
index f928ebff500..dc45a688925 100644
--- a/dlls/ntdll/heap.c
+++ b/dlls/ntdll/heap.c
@@ -485,6 +485,17 @@ static inline void HEAP_InsertFreeBlock( HEAP *heap, ARENA_FREE *pArena, BOOL la
/***********************************************************************
+ * HEAP_DeleteFreeBlock
+ *
+ * Delete a free block from the free list.
+ */
+static inline void HEAP_DeleteFreeBlock( HEAP *heap, ARENA_FREE *pArena )
+{
+ list_remove( &pArena->entry );
+}
+
+
+/***********************************************************************
* HEAP_FindSubHeap
* Find the sub-heap containing a given address.
*
@@ -592,7 +603,7 @@ static void HEAP_CreateFreeBlock( SUBHEAP *subheap, void *ptr, SIZE_T size )
{
/* Remove the next arena from the free list */
ARENA_FREE *pNext = (ARENA_FREE *)((char *)ptr + size);
- list_remove( &pNext->entry );
+ HEAP_DeleteFreeBlock( subheap->heap, pNext );
size += (pNext->size & ARENA_SIZE_MASK) + sizeof(*pNext);
mark_block_free( pNext, sizeof(ARENA_FREE), flags );
}
@@ -647,7 +658,7 @@ static void HEAP_MakeInUseBlockFree( SUBHEAP *subheap, ARENA_INUSE *pArena )
pFree = *((ARENA_FREE **)pArena - 1);
size += (pFree->size & ARENA_SIZE_MASK) + sizeof(ARENA_FREE);
/* Remove it from the free list */
- list_remove( &pFree->entry );
+ HEAP_DeleteFreeBlock( heap, pFree );
}
else pFree = (ARENA_FREE *)pArena;
@@ -667,7 +678,7 @@ static void HEAP_MakeInUseBlockFree( SUBHEAP *subheap, ARENA_INUSE *pArena )
size = 0;
/* Remove the free block from the list */
- list_remove( &pFree->entry );
+ HEAP_DeleteFreeBlock( heap, pFree );
/* Remove the subheap from the list */
list_remove( &subheap->entry );
/* Free the memory */
@@ -1697,7 +1708,7 @@ PVOID WINAPI RtlAllocateHeap( HANDLE heap, ULONG flags, SIZE_T size )
/* Remove the arena from the free list */
- list_remove( &pArena->entry );
+ HEAP_DeleteFreeBlock( heapPtr, pArena );
/* Build the in-use arena */
@@ -1854,7 +1865,7 @@ PVOID WINAPI RtlReAllocateHeap( HANDLE heap, ULONG flags, PVOID ptr, SIZE_T size
{
/* The next block is free and large enough */
ARENA_FREE *pFree = (ARENA_FREE *)pNext;
- list_remove( &pFree->entry );
+ HEAP_DeleteFreeBlock( heapPtr, pFree );
pArena->size += (pFree->size & ARENA_SIZE_MASK) + sizeof(*pFree);
if (!HEAP_Commit( subheap, pArena, rounded_size )) goto oom;
notify_realloc( pArena + 1, oldActualSize, size );
@@ -1872,7 +1883,7 @@ PVOID WINAPI RtlReAllocateHeap( HANDLE heap, ULONG flags, PVOID ptr, SIZE_T size
/* Build the in-use arena */
- list_remove( &pNew->entry );
+ HEAP_DeleteFreeBlock( heapPtr, pNew );
pInUse = (ARENA_INUSE *)pNew;
pInUse->size = (pInUse->size & ~ARENA_FLAG_FREE)
+ sizeof(ARENA_FREE) - sizeof(ARENA_INUSE);
--
2.13.1

View File

@@ -1,2 +0,0 @@
Fixes: [43224] Improvement for heap allocation performance
Disabled: True

View File

@@ -1,16 +1,16 @@
From da698613af1808ca0fe2599bc4b7898fad9dcf18 Mon Sep 17 00:00:00 2001
From 1656f670f68ce218458fc26dc8688c78d99091cb Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 21:02:11 -0700
Subject: server: Implement FILE_OPEN_REPARSE_POINT option.
Subject: [PATCH] server: Implement FILE_OPEN_REPARSE_POINT option.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
---
dlls/kernelbase/file.c | 2 +
server/fd.c | 142 +++++++++++++++++++++++++++++++++++++++--
2 files changed, 137 insertions(+), 7 deletions(-)
server/fd.c | 144 +++++++++++++++++++++++++++++++++++++++--
2 files changed, 139 insertions(+), 7 deletions(-)
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c
index 5ba7e0be419..bfb291fa925 100644
index ac04388acde..d0da370ae88 100644
--- a/dlls/kernelbase/file.c
+++ b/dlls/kernelbase/file.c
@@ -735,6 +735,8 @@ static UINT get_nt_file_options( DWORD attributes )
@@ -23,7 +23,7 @@ index 5ba7e0be419..bfb291fa925 100644
}
diff --git a/server/fd.c b/server/fd.c
index eaebe044f37..1ed975673a6 100644
index eaebe044f37..db645779dc6 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -31,6 +31,7 @@
@@ -136,7 +136,7 @@ index eaebe044f37..1ed975673a6 100644
}
}
free( fd->unix_name );
@@ -1888,6 +1965,36 @@ void get_nt_name( struct fd *fd, struct unicode_str *name )
@@ -1888,6 +1965,38 @@ void get_nt_name( struct fd *fd, struct unicode_str *name )
name->len = fd->nt_namelen;
}
@@ -155,8 +155,10 @@ index eaebe044f37..1ed975673a6 100644
+{
+ char tmp[PATH_MAX], resolved_path[PATH_MAX], *p;
+
+#if defined(O_SYMLINK)
+ if ((flags & O_SYMLINK) != O_SYMLINK)
+ return realpath( path, NULL );
+#endif
+
+ strcpy( tmp, path );
+ p = dirname( tmp );
@@ -173,7 +175,7 @@ index eaebe044f37..1ed975673a6 100644
/* open() wrapper that returns a struct fd with no fd user set */
struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_name,
int flags, mode_t *mode, unsigned int access,
@@ -1948,6 +2055,15 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
@@ -1948,6 +2057,15 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
}
else rw_mode = O_RDONLY;
@@ -189,7 +191,7 @@ index eaebe044f37..1ed975673a6 100644
if ((fd->unix_fd = open( name, rw_mode | (flags & ~O_TRUNC), *mode )) == -1)
{
/* if we tried to open a directory for write access, retry read-only */
@@ -1972,7 +2088,7 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
@@ -1972,7 +2090,7 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
fd->unix_name = NULL;
if ((path = dup_fd_name( root, name )))
{
@@ -198,7 +200,7 @@ index eaebe044f37..1ed975673a6 100644
free( path );
}
@@ -1983,10 +2099,11 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
@@ -1983,10 +2101,11 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
*mode = st.st_mode;
/* only bother with an inode for normal files and directories */
@@ -211,7 +213,7 @@ index eaebe044f37..1ed975673a6 100644
if (!inode)
{
@@ -2001,13 +2118,17 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
@@ -2001,13 +2120,17 @@ struct fd *open_fd( struct fd *root, const char *name, struct unicode_str nt_nam
list_add_head( &inode->open, &fd->inode_entry );
closed_fd = NULL;
@@ -231,7 +233,7 @@ index eaebe044f37..1ed975673a6 100644
{
set_error( STATUS_FILE_IS_A_DIRECTORY );
goto error;
@@ -2439,6 +2560,7 @@ static struct fd *get_handle_fd_obj( struct process *process, obj_handle_t handl
@@ -2439,6 +2562,7 @@ static struct fd *get_handle_fd_obj( struct process *process, obj_handle_t handl
static int is_dir_empty( int fd )
{
@@ -239,7 +241,7 @@ index eaebe044f37..1ed975673a6 100644
DIR *dir;
int empty;
struct dirent *de;
@@ -2446,8 +2568,13 @@ static int is_dir_empty( int fd )
@@ -2446,8 +2570,13 @@ static int is_dir_empty( int fd )
if ((fd = dup( fd )) == -1)
return -1;
@@ -254,7 +256,7 @@ index eaebe044f37..1ed975673a6 100644
close( fd );
return -1;
}
@@ -2459,6 +2586,7 @@ static int is_dir_empty( int fd )
@@ -2459,6 +2588,7 @@ static int is_dir_empty( int fd )
empty = 0;
}
closedir( dir );
@@ -262,7 +264,7 @@ index eaebe044f37..1ed975673a6 100644
return empty;
}
@@ -2497,7 +2625,7 @@ static void set_fd_disposition( struct fd *fd, int unlink )
@@ -2497,7 +2627,7 @@ static void set_fd_disposition( struct fd *fd, int unlink )
file_set_error();
return;
}
@@ -272,5 +274,5 @@ index eaebe044f37..1ed975673a6 100644
if (!(st.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)))
{
--
2.17.1
2.39.1

View File

@@ -1,4 +1,4 @@
From 7bbc11e52188ec7babe97270f03e2e5015ac22ff Mon Sep 17 00:00:00 2001
From 18540f65cde320c499eb8bcb630ade9f9fa977fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 30 Nov 2021 16:32:34 +0300
Subject: [PATCH] ntdll: Implement opening files through nt device paths.
@@ -9,7 +9,7 @@ Subject: [PATCH] ntdll: Implement opening files through nt device paths.
2 files changed, 156 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 640fd2d81db..e8e8652334e 100644
index af67e8d75bf..608b64a32ad 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -137,18 +137,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
@@ -63,7 +63,7 @@ index 640fd2d81db..e8e8652334e 100644
static void open_file_test(void)
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index 67e0c6f0b40..25a03ef84f1 100644
index ba9cd8d9031..c3ddf72b44b 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -4494,7 +4494,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
@@ -222,5 +222,5 @@ index 67e0c6f0b40..25a03ef84f1 100644
* wine_nt_to_unix_file_name
*
--
2.38.1
2.39.1

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