You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
f6dacd2f9a | ||
|
43c064ef3c | ||
|
5c5a8f3b2c | ||
|
bd135b1477 | ||
|
9692b2e5eb | ||
|
bcf5899a3c | ||
|
73480ec459 | ||
|
fd3372e71c | ||
|
3dec70bf32 | ||
|
b201ee708b | ||
|
74534094a0 | ||
|
1830eaa655 | ||
|
f168899ce1 | ||
|
f8ce6cbb21 | ||
|
64877514fb | ||
|
310072bb63 | ||
|
2f619b2a53 | ||
|
76f8eb15f1 | ||
|
6364ada0ad | ||
|
caa2471e20 | ||
|
2414b1da6a |
@@ -0,0 +1,48 @@
|
||||
From f8f6f53f2bb3d138717ac7a82c78010bce874d4a Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Mon, 25 Jan 2021 19:14:32 +1100
|
||||
Subject: [PATCH] dsound: Fake success for EAX Set Buffer/ListenerProperties
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50551
|
||||
---
|
||||
dlls/dsound/buffer.c | 3 ++-
|
||||
dlls/dsound/eax.c | 8 ++++----
|
||||
2 files changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index 6393656c9fa..24ff1a6198c 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -1299,7 +1299,8 @@ static HRESULT WINAPI IKsPropertySetImpl_Set(IKsPropertySet *iface, REFGUID guid
|
||||
|
||||
TRACE("(%p,%s,%d,%p,%d,%p,%d)\n",This,debugstr_guid(guidPropSet),dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData);
|
||||
|
||||
- if (IsEqualGUID(&DSPROPSETID_EAX_ReverbProperties, guidPropSet) || IsEqualGUID(&DSPROPSETID_EAXBUFFER_ReverbProperties, guidPropSet))
|
||||
+ if (IsEqualGUID(&DSPROPSETID_EAX_ReverbProperties, guidPropSet) || IsEqualGUID(&DSPROPSETID_EAXBUFFER_ReverbProperties, guidPropSet) ||
|
||||
+ IsEqualGUID(&DSPROPSETID_EAX20_ListenerProperties, guidPropSet) || IsEqualGUID(&DSPROPSETID_EAX20_BufferProperties, guidPropSet))
|
||||
return EAX_Set(This, guidPropSet, dwPropID, pInstanceData, cbInstanceData, pPropData, cbPropData);
|
||||
|
||||
return E_PROP_ID_UNSUPPORTED;
|
||||
diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c
|
||||
index 6a6d22bc031..b3f48cdb5bd 100644
|
||||
--- a/dlls/dsound/eax.c
|
||||
+++ b/dlls/dsound/eax.c
|
||||
@@ -1082,11 +1082,11 @@ HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
|
||||
|
||||
return S_OK;
|
||||
} else if (IsEqualGUID(&DSPROPSETID_EAX20_ListenerProperties, guidPropSet)) {
|
||||
- FIXME("Unsupported DSPROPSETID_EAX20_ListenerProperties: %d\n", dwPropID);
|
||||
- return E_PROP_ID_UNSUPPORTED;
|
||||
+ FIXME("Unsupported DSPROPSETID_EAX20_ListenerProperties: %d - Faking Success\n", dwPropID);
|
||||
+ return S_OK;
|
||||
} else if (IsEqualGUID(&DSPROPSETID_EAX20_BufferProperties, guidPropSet)) {
|
||||
- FIXME("Unsupported DSPROPSETID_EAX20_BufferProperties: %d\n", dwPropID);
|
||||
- return E_PROP_ID_UNSUPPORTED;
|
||||
+ FIXME("Unsupported DSPROPSETID_EAX20_BufferProperties: %d - Faking Success\n", dwPropID);
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
FIXME("(%p,%s,%d,%p,%d,%p,%d)\n",
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1,122 +0,0 @@
|
||||
From 065142976ed5c7814830579e36612d3c515d90c3 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 5 Jan 2021 11:36:25 +1100
|
||||
Subject: [PATCH] dsound: IDirectSoundBuffer8 GetStatus return
|
||||
DSBSTATUS_LOCSOFTWARE for deferred buffers
|
||||
|
||||
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=21014
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/dsound/buffer.c | 2 +
|
||||
dlls/dsound/tests/dsound8.c | 74 +++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 76 insertions(+)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index 96391ebba03..6393656c9fa 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -421,6 +421,8 @@ static HRESULT WINAPI IDirectSoundBufferImpl_GetStatus(IDirectSoundBuffer8 *ifac
|
||||
if (This->playflags & DSBPLAY_LOOPING)
|
||||
*status |= DSBSTATUS_LOOPING;
|
||||
}
|
||||
+ if (This->dsbd.dwFlags & DSBCAPS_LOCDEFER)
|
||||
+ *status |= DSBSTATUS_LOCSOFTWARE;
|
||||
ReleaseSRWLockShared(&This->lock);
|
||||
|
||||
TRACE("status=%x\n", *status);
|
||||
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
|
||||
index 81c5710dbaf..85272dd9b55 100644
|
||||
--- a/dlls/dsound/tests/dsound8.c
|
||||
+++ b/dlls/dsound/tests/dsound8.c
|
||||
@@ -1809,6 +1809,79 @@ static void test_effects(void)
|
||||
ok(!ref, "Got outstanding refcount %u.\n", ref);
|
||||
}
|
||||
|
||||
+static void test_AcquireResources(void)
|
||||
+{
|
||||
+ IDirectSound8 *dsound;
|
||||
+ IDirectSoundBuffer *primary, *secondary;
|
||||
+ DSBUFFERDESC bufdesc;
|
||||
+ WAVEFORMATEX fmt;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ hr = DirectSoundCreate8(NULL, &dsound, NULL);
|
||||
+ ok(hr == DS_OK || hr == DSERR_NODRIVER, "Got hr %#x.\n", hr);
|
||||
+ if (FAILED(hr))
|
||||
+ return;
|
||||
+
|
||||
+ hr = IDirectSound8_SetCooperativeLevel(dsound, get_hwnd(), DSSCL_PRIORITY);
|
||||
+ ok(hr == DS_OK, "Got hr %#x.\n", hr);
|
||||
+
|
||||
+ bufdesc.dwSize = sizeof(bufdesc);
|
||||
+ bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_PRIMARYBUFFER;
|
||||
+ bufdesc.dwBufferBytes = 0;
|
||||
+ bufdesc.dwReserved = 0;
|
||||
+ bufdesc.lpwfxFormat = NULL;
|
||||
+ bufdesc.guid3DAlgorithm = GUID_NULL;
|
||||
+
|
||||
+ hr = IDirectSound8_CreateSoundBuffer(dsound, &bufdesc, &primary, NULL);
|
||||
+ ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr);
|
||||
+ if(hr != S_OK) {
|
||||
+ IDirectSound_Release(dsound);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ fmt.wFormatTag = WAVE_FORMAT_PCM;
|
||||
+ fmt.nChannels = 2;
|
||||
+ fmt.nSamplesPerSec = 48000;
|
||||
+ fmt.wBitsPerSample = 16;
|
||||
+ fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8;
|
||||
+ fmt.nAvgBytesPerSec = fmt.nBlockAlign * fmt.nSamplesPerSec;
|
||||
+ fmt.cbSize = 0;
|
||||
+
|
||||
+ bufdesc.lpwfxFormat = &fmt;
|
||||
+ bufdesc.dwBufferBytes = fmt.nSamplesPerSec * fmt.nBlockAlign / 10;
|
||||
+ bufdesc.dwFlags = DSBCAPS_LOCDEFER | DSBCAPS_CTRLVOLUME;
|
||||
+
|
||||
+ /* see if we can create one more */
|
||||
+ hr = IDirectSound8_CreateSoundBuffer(dsound, &bufdesc, &secondary, NULL);
|
||||
+ ok(hr == S_OK, "CreateSoundBuffer gave wrong error: %08x\n", hr);
|
||||
+ if(hr == S_OK) {
|
||||
+ DWORD status;
|
||||
+ IDirectSoundBuffer8 *buffer8;
|
||||
+
|
||||
+ hr = IDirectSoundBuffer_QueryInterface(secondary, &IID_IDirectSoundBuffer8, (void **)&buffer8);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+
|
||||
+ status = 0xFFFF;
|
||||
+ hr = IDirectSoundBuffer8_GetStatus(buffer8, &status);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+ todo_wine ok(status == 0, "got: %08x\n", status);
|
||||
+
|
||||
+ hr = IDirectSoundBuffer8_AcquireResources(buffer8, 0, 0, NULL);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+
|
||||
+ status = 0xFFFF;
|
||||
+ hr = IDirectSoundBuffer8_GetStatus(buffer8, &status);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+ ok(status == DSBSTATUS_LOCSOFTWARE, "got: %08x\n", status);
|
||||
+
|
||||
+ IDirectSoundBuffer8_Release(buffer8);
|
||||
+ IDirectSoundBuffer_Release(secondary);
|
||||
+ }
|
||||
+
|
||||
+ IDirectSoundBuffer_Release(primary);
|
||||
+ IDirectSound_Release(dsound);
|
||||
+}
|
||||
+
|
||||
START_TEST(dsound8)
|
||||
{
|
||||
DWORD cookie;
|
||||
@@ -1822,6 +1895,7 @@ START_TEST(dsound8)
|
||||
test_hw_buffers();
|
||||
test_first_device();
|
||||
test_primary_flags();
|
||||
+ test_AcquireResources();
|
||||
|
||||
hr = CoRegisterClassObject(&testdmo_clsid, (IUnknown *)&testdmo_cf,
|
||||
CLSCTX_INPROC_SERVER, REGCLS_MULTIPLEUSE, &cookie);
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [21014] dsound: IDirectSoundBuffer8 GetStatus return DSBSTATUS_LOCSOFTWARE for deferred buffers
|
@@ -1,4 +1,4 @@
|
||||
From 6242434571910c686887b51cbbee8f6cb9b83389 Mon Sep 17 00:00:00 2001
|
||||
From 73b91ff2ff705bf35d9603a6446b424af90fb199 Mon Sep 17 00:00:00 2001
|
||||
From: Lucian Poston <lucianposton@pm.me>
|
||||
Date: Wed, 23 May 2018 00:01:42 -0700
|
||||
Subject: [PATCH] dwrite: Test GetMetrics with custom fontcollection
|
||||
@@ -9,10 +9,10 @@ Signed-off-by: Lucian Poston <lucianposton@pm.me>
|
||||
1 file changed, 279 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
|
||||
index d89ccc9d995..bf003376f86 100644
|
||||
index 4cba57764fd..26f4693e862 100644
|
||||
--- a/dlls/dwrite/tests/layout.c
|
||||
+++ b/dlls/dwrite/tests/layout.c
|
||||
@@ -3297,7 +3297,7 @@ todo_wine
|
||||
@@ -3339,7 +3339,7 @@ todo_wine
|
||||
DWRITE_FONT_STRETCH_NORMAL, 10.0, L"en-us", &format);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
|
||||
@@ -21,7 +21,7 @@ index d89ccc9d995..bf003376f86 100644
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
|
||||
count = 0;
|
||||
@@ -4480,6 +4480,7 @@ static void test_SetWordWrapping(void)
|
||||
@@ -4522,6 +4522,7 @@ static void test_SetWordWrapping(void)
|
||||
/* Collection dedicated to fallback testing */
|
||||
|
||||
static const WCHAR g_blahfontW[] = {'B','l','a','h',0};
|
||||
@@ -29,7 +29,7 @@ index d89ccc9d995..bf003376f86 100644
|
||||
static HRESULT WINAPI fontcollection_QI(IDWriteFontCollection *iface, REFIID riid, void **obj)
|
||||
{
|
||||
if (IsEqualIID(riid, &IID_IDWriteFontCollection) || IsEqualIID(riid, &IID_IUnknown)) {
|
||||
@@ -4541,6 +4542,9 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface
|
||||
@@ -4583,6 +4584,9 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface
|
||||
*index = 123456;
|
||||
*exists = TRUE;
|
||||
return S_OK;
|
||||
@@ -39,8 +39,8 @@ index d89ccc9d995..bf003376f86 100644
|
||||
}
|
||||
ok(0, "unexpected call, name %s\n", wine_dbgstr_w(name));
|
||||
return E_NOTIMPL;
|
||||
@@ -5781,6 +5785,279 @@ todo_wine {
|
||||
IDWriteFactory_Release(factory);
|
||||
@@ -5992,6 +5996,279 @@ if (SUCCEEDED(hr))
|
||||
IDWriteFactory6_Release(factory);
|
||||
}
|
||||
|
||||
+static void test_GetMetrics_with_custom_fontcollection(void)
|
||||
@@ -319,7 +319,7 @@ index d89ccc9d995..bf003376f86 100644
|
||||
START_TEST(layout)
|
||||
{
|
||||
IDWriteFactory *factory;
|
||||
@@ -5814,6 +6091,7 @@ START_TEST(layout)
|
||||
@@ -6025,6 +6302,7 @@ START_TEST(layout)
|
||||
test_SetFontStretch();
|
||||
test_SetStrikethrough();
|
||||
test_GetMetrics();
|
||||
@@ -328,5 +328,5 @@ index d89ccc9d995..bf003376f86 100644
|
||||
test_SetDrawingEffect();
|
||||
test_GetLineMetrics();
|
||||
--
|
||||
2.17.1
|
||||
2.29.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From d8cf82ba904cfa956dc5e2146ab98afa6efc46ff Mon Sep 17 00:00:00 2001
|
||||
From 70c7589e029a19a3b048cdf5c222fb36e489ba69 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <zfigura@codeweavers.com>
|
||||
Date: Mon, 6 Jul 2020 14:40:43 -0500
|
||||
Subject: [PATCH] ntdll, server: Implement NtCreateEvent().
|
||||
@@ -6,9 +6,9 @@ Subject: [PATCH] ntdll, server: Implement NtCreateEvent().
|
||||
---
|
||||
dlls/ntdll/unix/esync.c | 27 +++++++++++++++++++++++++++
|
||||
dlls/ntdll/unix/esync.h | 3 +++
|
||||
dlls/ntdll/unix/sync.c | 3 +++
|
||||
dlls/ntdll/unix/sync.c | 4 ++++
|
||||
server/esync.c | 15 +++++++++++++++
|
||||
4 files changed, 48 insertions(+)
|
||||
4 files changed, 49 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
|
||||
index 1b71105491c..e440e9baa4a 100644
|
||||
@@ -77,13 +77,14 @@ index 87516e7597a..d9c7df967f8 100644
|
||||
BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
|
||||
index 445c2a4324d..51f77b1015f 100644
|
||||
index 1abc691811b..de4c75afcea 100644
|
||||
--- a/dlls/ntdll/unix/sync.c
|
||||
+++ b/dlls/ntdll/unix/sync.c
|
||||
@@ -434,6 +434,9 @@ NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_
|
||||
data_size_t len;
|
||||
@@ -435,6 +435,10 @@ NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_
|
||||
struct object_attributes *objattr;
|
||||
|
||||
if (type != NotificationEvent && type != SynchronizationEvent) return STATUS_INVALID_PARAMETER;
|
||||
+
|
||||
+ if (do_esync())
|
||||
+ return esync_create_event( handle, access, attr, type, state );
|
||||
+
|
||||
@@ -124,5 +125,5 @@ index 226e70cd1ad..b9e0a455629 100644
|
||||
assert( 0 );
|
||||
}
|
||||
--
|
||||
2.28.0
|
||||
2.29.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From af7dc115ada8acf19aebedfc091e048b919c2478 Mon Sep 17 00:00:00 2001
|
||||
From 3a159edee2db7634475ee665e3ab0cf56c5425f6 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Fri, 8 Jun 2018 18:51:40 -0500
|
||||
Subject: [PATCH] server: Add an object operation to grab the esync file
|
||||
@@ -110,10 +110,10 @@ index 0bad4d7a260..176cf1b817e 100644
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
diff --git a/server/console.c b/server/console.c
|
||||
index 295db7767b2..a67f1918a3a 100644
|
||||
index d1f948b23a6..cc534e8c9c1 100644
|
||||
--- a/server/console.c
|
||||
+++ b/server/console.c
|
||||
@@ -82,6 +82,7 @@ static const struct object_ops console_ops =
|
||||
@@ -81,6 +81,7 @@ static const struct object_ops console_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
console_signaled, /* signaled */
|
||||
@@ -121,7 +121,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
console_get_fd, /* get_fd */
|
||||
@@ -157,6 +158,7 @@ static const struct object_ops console_server_ops =
|
||||
@@ -156,6 +157,7 @@ static const struct object_ops console_server_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
console_server_signaled, /* signaled */
|
||||
@@ -129,7 +129,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
console_server_get_fd, /* get_fd */
|
||||
@@ -225,6 +227,7 @@ static const struct object_ops screen_buffer_ops =
|
||||
@@ -224,6 +226,7 @@ static const struct object_ops screen_buffer_ops =
|
||||
screen_buffer_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -137,7 +137,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
NULL, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
screen_buffer_get_fd, /* get_fd */
|
||||
@@ -274,6 +277,7 @@ static const struct object_ops console_device_ops =
|
||||
@@ -273,6 +276,7 @@ static const struct object_ops console_device_ops =
|
||||
no_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -145,7 +145,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -311,6 +315,7 @@ static const struct object_ops console_input_ops =
|
||||
@@ -310,6 +314,7 @@ static const struct object_ops console_input_ops =
|
||||
console_input_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -153,7 +153,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
console_input_get_fd, /* get_fd */
|
||||
@@ -367,6 +372,7 @@ static const struct object_ops console_output_ops =
|
||||
@@ -366,6 +371,7 @@ static const struct object_ops console_output_ops =
|
||||
console_output_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -161,7 +161,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
console_output_get_fd, /* get_fd */
|
||||
@@ -424,6 +430,7 @@ static const struct object_ops console_connection_ops =
|
||||
@@ -423,6 +429,7 @@ static const struct object_ops console_connection_ops =
|
||||
no_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -170,7 +170,7 @@ index 295db7767b2..a67f1918a3a 100644
|
||||
no_signal, /* signal */
|
||||
console_connection_get_fd, /* get_fd */
|
||||
diff --git a/server/debugger.c b/server/debugger.c
|
||||
index e4a6c1e43a8..c37f97aa0b6 100644
|
||||
index 9531a4b6909..7eb7847a9da 100644
|
||||
--- a/server/debugger.c
|
||||
+++ b/server/debugger.c
|
||||
@@ -73,6 +73,7 @@ static const struct object_ops debug_event_ops =
|
||||
@@ -181,10 +181,10 @@ index e4a6c1e43a8..c37f97aa0b6 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -101,6 +102,7 @@ static const struct object_ops debug_ctx_ops =
|
||||
@@ -103,6 +104,7 @@ static const struct object_ops debug_obj_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
debug_ctx_signaled, /* signaled */
|
||||
debug_obj_signaled, /* signaled */
|
||||
+ NULL, /* get_esync_fd */
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
@@ -226,7 +226,7 @@ index 652da83e1e2..cc9aa2358a4 100644
|
||||
no_signal, /* signal */
|
||||
device_file_get_fd, /* get_fd */
|
||||
diff --git a/server/directory.c b/server/directory.c
|
||||
index 81d02d6f64e..1ffa35f0cc8 100644
|
||||
index ca9f978ff7f..2d25667106e 100644
|
||||
--- a/server/directory.c
|
||||
+++ b/server/directory.c
|
||||
@@ -57,6 +57,7 @@ static const struct object_ops object_type_ops =
|
||||
@@ -278,7 +278,7 @@ index cba9472aa3d..06655fc7dd6 100644
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index c3c53489212..d3b1e515b52 100644
|
||||
index 673055718f8..5b76e3a876e 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -216,6 +216,7 @@ static const struct object_ops fd_ops =
|
||||
@@ -314,10 +314,10 @@ index c3c53489212..d3b1e515b52 100644
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
diff --git a/server/file.c b/server/file.c
|
||||
index 2cc4a9d978c..5c28b1c176d 100644
|
||||
index d7e1af5841a..308d19cec31 100644
|
||||
--- a/server/file.c
|
||||
+++ b/server/file.c
|
||||
@@ -86,6 +86,7 @@ static const struct object_ops file_ops =
|
||||
@@ -85,6 +85,7 @@ static const struct object_ops file_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
default_fd_signaled, /* signaled */
|
||||
@@ -386,7 +386,7 @@ index 5d26c606080..2e09bab22fa 100644
|
||||
no_signal, /* signal */
|
||||
mailslot_device_file_get_fd, /* get_fd */
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index 6c2e7a1fd2b..d06ceaa1a66 100644
|
||||
index 9c51aa3bec7..70395b804b0 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -68,6 +68,7 @@ static const struct object_ops ranges_ops =
|
||||
@@ -483,7 +483,7 @@ index 73058fd3f99..02878ef0e0e 100644
|
||||
void (*satisfied)(struct object *,struct wait_queue_entry *);
|
||||
/* signal an object */
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 5b3e29e5dfd..a7db8332702 100644
|
||||
index 3dabe0e6cfa..a8b11686315 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -78,6 +78,7 @@ static const struct object_ops process_ops =
|
||||
@@ -531,10 +531,10 @@ index a552fed57bb..263bb46ea00 100644
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
diff --git a/server/registry.c b/server/registry.c
|
||||
index c937e051597..8110bbb340c 100644
|
||||
index 64aec1d83c9..49a3c679207 100644
|
||||
--- a/server/registry.c
|
||||
+++ b/server/registry.c
|
||||
@@ -160,6 +160,7 @@ static const struct object_ops key_ops =
|
||||
@@ -161,6 +161,7 @@ static const struct object_ops key_ops =
|
||||
no_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -591,7 +591,7 @@ index 7c2bf2cc154..b6d6dcfc4b6 100644
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
diff --git a/server/sock.c b/server/sock.c
|
||||
index 1ff56f7bbe5..57dd5a7c6d7 100644
|
||||
index 8c146a0a8f8..57d994ee332 100644
|
||||
--- a/server/sock.c
|
||||
+++ b/server/sock.c
|
||||
@@ -188,6 +188,7 @@ static const struct object_ops sock_ops =
|
||||
@@ -602,7 +602,7 @@ index 1ff56f7bbe5..57dd5a7c6d7 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
sock_get_fd, /* get_fd */
|
||||
@@ -1527,6 +1528,7 @@ static const struct object_ops ifchange_ops =
|
||||
@@ -1533,6 +1534,7 @@ static const struct object_ops ifchange_ops =
|
||||
add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -610,7 +610,7 @@ index 1ff56f7bbe5..57dd5a7c6d7 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
ifchange_get_fd, /* get_fd */
|
||||
@@ -1748,6 +1750,7 @@ static const struct object_ops socket_device_ops =
|
||||
@@ -1754,6 +1756,7 @@ static const struct object_ops socket_device_ops =
|
||||
no_add_queue, /* add_queue */
|
||||
NULL, /* remove_queue */
|
||||
NULL, /* signaled */
|
||||
@@ -631,7 +631,7 @@ index 0b85350e1a5..c7212618cac 100644
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 0a0d957384b..c10f1710542 100644
|
||||
index f493b7b2aa8..29a692361f8 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -110,6 +110,7 @@ static const struct object_ops thread_apc_ops =
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 3d3cd983add6183a0e38c427d15895c331a2b666 Mon Sep 17 00:00:00 2001
|
||||
From 882fe7c0815814c912722d663c981c411e7314f5 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, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 785203b7fa6..b52a1f5048c 100644
|
||||
index 2d2a80a61ef..c52057d1f50 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -172,6 +172,7 @@ static const struct object_ops context_ops =
|
||||
@@ -34,7 +34,7 @@ index 785203b7fa6..b52a1f5048c 100644
|
||||
thread->teb = 0;
|
||||
thread->entry_point = 0;
|
||||
+ thread->esync_fd = -1;
|
||||
thread->debug_ctx = NULL;
|
||||
thread->debug_obj = NULL;
|
||||
thread->system_regs = 0;
|
||||
thread->queue = NULL;
|
||||
@@ -361,6 +363,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
|
||||
@@ -72,7 +72,7 @@ index 785203b7fa6..b52a1f5048c 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 78ca4c201b2..faffe13d795 100644
|
||||
index 4a8c5b1cb2c..e6a9f987c9e 100644
|
||||
--- a/server/thread.h
|
||||
+++ b/server/thread.h
|
||||
@@ -54,6 +54,7 @@ struct thread
|
||||
@@ -80,9 +80,9 @@ index 78ca4c201b2..faffe13d795 100644
|
||||
thread_id_t id; /* thread id */
|
||||
struct list mutex_list; /* list of currently owned mutexes */
|
||||
+ int esync_fd; /* esync file descriptor (signalled on exit) */
|
||||
struct debug_ctx *debug_ctx; /* debugger context if this thread is a debugger */
|
||||
struct debug_obj *debug_obj; /* debugger context if this thread is a debugger */
|
||||
unsigned int system_regs; /* which system regs have been set */
|
||||
struct msg_queue *queue; /* message queue */
|
||||
--
|
||||
2.28.0
|
||||
2.29.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From b04ab24c90337271146425edc2059328e42743b6 Mon Sep 17 00:00:00 2001
|
||||
From 607d2418e9997885192791cb54a9cdfdaf77eee1 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <zfigura@codeweavers.com>
|
||||
Date: Mon, 6 Jul 2020 17:17:31 -0500
|
||||
Subject: [PATCH] ntdll, server: Implement alertable waits.
|
||||
@@ -164,7 +164,7 @@ index d1a282c65e9..2a7c3865617 100644
|
||||
|
||||
/* We need to let the server know when we are doing a message wait, and when we
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index 23731f0fdc6..b2020b6311a 100644
|
||||
index 1d6ba95d2a1..9c8e334aba6 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -50,6 +50,7 @@ struct ntdll_thread_data
|
||||
@@ -176,10 +176,10 @@ index 23731f0fdc6..b2020b6311a 100644
|
||||
int reply_fd; /* fd for receiving server replies */
|
||||
int wait_fd[2]; /* fd for sleeping server requests */
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 785583a340a..93646bc51f4 100644
|
||||
index c1e79a210f4..5631414bf4c 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -2552,6 +2552,7 @@ static void init_teb( TEB *teb, PEB *peb )
|
||||
@@ -2565,6 +2565,7 @@ static void init_teb( TEB *teb, PEB *peb )
|
||||
InitializeListHead( &teb->ActivationContextStack.FrameListCache );
|
||||
teb->StaticUnicodeString.Buffer = teb->StaticUnicodeBuffer;
|
||||
teb->StaticUnicodeString.MaximumLength = sizeof(teb->StaticUnicodeBuffer);
|
||||
@@ -244,10 +244,10 @@ index aeb58c5469c..cea025d9308 100644
|
||||
void esync_clear( int fd );
|
||||
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 30296aedde8..d2772aacec2 100644
|
||||
index e60d6f7e8dd..34eaff6207c 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3707,3 +3707,7 @@ enum esync_type
|
||||
@@ -3718,3 +3718,7 @@ enum esync_type
|
||||
@REQ(esync_msgwait)
|
||||
int in_msgwait; /* are we in a message wait? */
|
||||
@END
|
||||
@@ -256,7 +256,7 @@ index 30296aedde8..d2772aacec2 100644
|
||||
+@REQ(get_esync_apc_fd)
|
||||
+@END
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index b52a1f5048c..6fb8684f5e0 100644
|
||||
index c52057d1f50..0b905e6a155 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -227,6 +227,7 @@ static inline void init_thread_structure( struct thread *thread )
|
||||
@@ -264,7 +264,7 @@ index b52a1f5048c..6fb8684f5e0 100644
|
||||
thread->entry_point = 0;
|
||||
thread->esync_fd = -1;
|
||||
+ thread->esync_apc_fd = -1;
|
||||
thread->debug_ctx = NULL;
|
||||
thread->debug_obj = NULL;
|
||||
thread->system_regs = 0;
|
||||
thread->queue = NULL;
|
||||
@@ -364,7 +365,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
|
||||
@@ -304,7 +304,7 @@ index b52a1f5048c..6fb8684f5e0 100644
|
||||
}
|
||||
|
||||
diff --git a/server/thread.h b/server/thread.h
|
||||
index faffe13d795..0f6108b684a 100644
|
||||
index e6a9f987c9e..ff86da99798 100644
|
||||
--- a/server/thread.h
|
||||
+++ b/server/thread.h
|
||||
@@ -55,6 +55,7 @@ struct thread
|
||||
@@ -312,7 +312,7 @@ index faffe13d795..0f6108b684a 100644
|
||||
struct list mutex_list; /* list of currently owned mutexes */
|
||||
int esync_fd; /* esync file descriptor (signalled on exit) */
|
||||
+ int esync_apc_fd; /* esync apc fd (signalled when APCs are present) */
|
||||
struct debug_ctx *debug_ctx; /* debugger context if this thread is a debugger */
|
||||
struct debug_obj *debug_obj; /* debugger context if this thread is a debugger */
|
||||
unsigned int system_regs; /* which system regs have been set */
|
||||
struct msg_queue *queue; /* message queue */
|
||||
--
|
||||
|
File diff suppressed because it is too large
Load Diff
9
patches/imm32-com-initialization/definition
Normal file
9
patches/imm32-com-initialization/definition
Normal file
@@ -0,0 +1,9 @@
|
||||
# Path Of Exile has been patched to correct this issue, the underlying issue still exists in wine.
|
||||
|
||||
# Mailing list patch, and comments about it's issues.
|
||||
# https://www.winehq.org/pipermail/wine-devel/2019-January/138404.html
|
||||
# https://www.winehq.org/pipermail/wine-devel/2019-February/date.html
|
||||
Fixes: [42695] Path of Exile fails - CoCreateInstance() called in uninitialized apartment
|
||||
Fixes: [47387] Victor Vran has no sound
|
||||
|
||||
Depends: winex11-_NET_ACTIVE_WINDOW
|
@@ -1,80 +0,0 @@
|
||||
From 2543348eb9a6d0ab4cdac725d240b16e0648dce7 Mon Sep 17 00:00:00 2001
|
||||
From: "Olivier F. R. Dierick" <o.dierick@piezo-forte.be>
|
||||
Date: Tue, 19 Apr 2016 07:25:39 +0200
|
||||
Subject: [PATCH] kernel32: Implement SetProcessDEPPolicy().
|
||||
|
||||
---
|
||||
dlls/kernel32/process.c | 36 ++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 32 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index ec37b66621f..cb15823c864 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -49,6 +49,8 @@ typedef struct
|
||||
DWORD dwReserved;
|
||||
} LOADPARMS32;
|
||||
|
||||
+static BOOL is_wow64;
|
||||
+
|
||||
SYSTEM_BASIC_INFORMATION system_info = { 0 };
|
||||
|
||||
/* Process flags */
|
||||
@@ -59,6 +61,7 @@ SYSTEM_BASIC_INFORMATION system_info = { 0 };
|
||||
#define PDB32_FILE_APIS_OEM 0x0040 /* File APIs are OEM */
|
||||
#define PDB32_WIN32S_PROC 0x8000 /* Win32s process */
|
||||
|
||||
+static DEP_SYSTEM_POLICY_TYPE system_DEP_policy = OptIn;
|
||||
|
||||
/***********************************************************************
|
||||
* wait_input_idle
|
||||
@@ -177,7 +180,6 @@ DWORD WINAPI LoadModule( LPCSTR name, LPVOID paramBlock )
|
||||
return ret;
|
||||
}
|
||||
|
||||
-
|
||||
/***********************************************************************
|
||||
* ExitProcess (KERNEL32.@)
|
||||
*
|
||||
@@ -562,9 +564,35 @@ DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy(void)
|
||||
*/
|
||||
BOOL WINAPI SetProcessDEPPolicy(DWORD newDEP)
|
||||
{
|
||||
- FIXME("(%d): stub\n", newDEP);
|
||||
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
- return FALSE;
|
||||
+ ULONG dep_flags = 0;
|
||||
+ NTSTATUS status;
|
||||
+
|
||||
+ TRACE("(%d)\n", newDEP);
|
||||
+
|
||||
+ if (is_wow64 || (system_DEP_policy != OptIn && system_DEP_policy != OptOut) )
|
||||
+ {
|
||||
+ SetLastError(ERROR_ACCESS_DENIED);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ if (!newDEP)
|
||||
+ dep_flags = MEM_EXECUTE_OPTION_ENABLE;
|
||||
+ else if (newDEP & PROCESS_DEP_ENABLE)
|
||||
+ dep_flags = MEM_EXECUTE_OPTION_DISABLE|MEM_EXECUTE_OPTION_PERMANENT;
|
||||
+ else
|
||||
+ {
|
||||
+ SetLastError(ERROR_ACCESS_DENIED);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ if (newDEP & PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION)
|
||||
+ dep_flags |= MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION;
|
||||
+
|
||||
+ status = NtSetInformationProcess( GetCurrentProcess(), ProcessExecuteFlags,
|
||||
+ &dep_flags, sizeof(dep_flags) );
|
||||
+
|
||||
+ if (status) SetLastError( RtlNtStatusToDosError(status) );
|
||||
+ return !status;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1,100 +0,0 @@
|
||||
From aedc3b18250733d5390e88ba451ee58d517eff3b Mon Sep 17 00:00:00 2001
|
||||
From: "Olivier F. R. Dierick" <o.dierick@piezo-forte.be>
|
||||
Date: Tue, 19 Apr 2016 07:33:32 +0200
|
||||
Subject: [PATCH] kernel32: Implement GetSystemDEPPolicy().
|
||||
|
||||
---
|
||||
dlls/kernel32/process.c | 70 +++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 68 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index e8e1e61b354..639c39460d9 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "winnls.h"
|
||||
#include "wincon.h"
|
||||
#include "kernel_private.h"
|
||||
+#include "winreg.h"
|
||||
#include "psapi.h"
|
||||
#include "wine/exception.h"
|
||||
#include "wine/server.h"
|
||||
@@ -560,8 +561,73 @@ DWORD WINAPI WTSGetActiveConsoleSessionId(void)
|
||||
*/
|
||||
DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy(void)
|
||||
{
|
||||
- FIXME("stub\n");
|
||||
- return OptIn;
|
||||
+ char buffer[MAX_PATH+10];
|
||||
+ DWORD size = sizeof(buffer);
|
||||
+ HKEY hkey = 0;
|
||||
+ HKEY appkey = 0;
|
||||
+ DWORD len;
|
||||
+ LSTATUS (WINAPI *pRegOpenKeyA)(HKEY,LPCSTR,PHKEY);
|
||||
+ LSTATUS (WINAPI *pRegQueryValueExA)(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
|
||||
+ LSTATUS (WINAPI *pRegCloseKey)(HKEY);
|
||||
+
|
||||
+ TRACE("()\n");
|
||||
+
|
||||
+ pRegOpenKeyA = (void*)GetProcAddress(GetModuleHandleA("advapi32"), "RegOpenKeyA");
|
||||
+ pRegQueryValueExA = (void*)GetProcAddress(GetModuleHandleA("advapi32"), "RegQueryValueExA");
|
||||
+ pRegCloseKey = (void*)GetProcAddress(GetModuleHandleA("advapi32"), "RegCloseKey");
|
||||
+ if ( !pRegOpenKeyA || !pRegQueryValueExA || !pRegCloseKey ) return OptIn;
|
||||
+
|
||||
+ /* @@ Wine registry key: HKCU\Software\Wine\Boot.ini */
|
||||
+ if ( pRegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\Boot.ini", &hkey ) ) hkey = 0;
|
||||
+
|
||||
+ len = GetModuleFileNameA( 0, buffer, MAX_PATH );
|
||||
+ if (len && len < MAX_PATH)
|
||||
+ {
|
||||
+ HKEY tmpkey;
|
||||
+ /* @@ Wine registry key: HKCU\Software\Wine\AppDefaults\app.exe\Boot.ini */
|
||||
+ if (!pRegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\AppDefaults", &tmpkey ))
|
||||
+ {
|
||||
+ char *p, *appname = buffer;
|
||||
+ if ((p = strrchr( appname, '/' ))) appname = p + 1;
|
||||
+ if ((p = strrchr( appname, '\\' ))) appname = p + 1;
|
||||
+ strcat( appname, "\\Boot.ini" );
|
||||
+ TRACE("appname = [%s]\n", appname);
|
||||
+ if (pRegOpenKeyA( tmpkey, appname, &appkey )) appkey = 0;
|
||||
+ pRegCloseKey( tmpkey );
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (hkey || appkey)
|
||||
+ {
|
||||
+ if ((appkey && !pRegQueryValueExA(appkey, "NoExecute", 0, NULL, (BYTE *)buffer, &size)) ||
|
||||
+ (hkey && !pRegQueryValueExA(hkey, "NoExecute", 0, NULL, (BYTE *)buffer, &size)))
|
||||
+ {
|
||||
+ if (!strcmp(buffer,"OptIn"))
|
||||
+ {
|
||||
+ TRACE("System DEP policy set to OptIn\n");
|
||||
+ system_DEP_policy = OptIn;
|
||||
+ }
|
||||
+ else if (!strcmp(buffer,"OptOut"))
|
||||
+ {
|
||||
+ TRACE("System DEP policy set to OptOut\n");
|
||||
+ system_DEP_policy = OptIn;
|
||||
+ }
|
||||
+ else if (!strcmp(buffer,"AlwaysOn"))
|
||||
+ {
|
||||
+ TRACE("System DEP policy set to AlwaysOn\n");
|
||||
+ system_DEP_policy = AlwaysOn;
|
||||
+ }
|
||||
+ else if (!strcmp(buffer,"AlwaysOff"))
|
||||
+ {
|
||||
+ TRACE("System DEP policy set to AlwaysOff\n");
|
||||
+ system_DEP_policy = AlwaysOff;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (appkey) pRegCloseKey( appkey );
|
||||
+ if (hkey) pRegCloseKey( hkey );
|
||||
+ return system_DEP_policy;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
--
|
||||
2.28.0
|
||||
|
@@ -1,44 +0,0 @@
|
||||
From 54e9832efd935277864c1faa0cb070676d2079a9 Mon Sep 17 00:00:00 2001
|
||||
From: "Olivier F. R. Dierick" <o.dierick@piezo-forte.be>
|
||||
Date: Tue, 19 Apr 2016 07:36:41 +0200
|
||||
Subject: [PATCH] kernel32: Make system DEP policy affect
|
||||
GetProcessDEPPolicy().
|
||||
|
||||
---
|
||||
dlls/kernel32/process.c | 18 +++++++++++++-----
|
||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 958b437cea..d7a444a314 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -3904,13 +3904,21 @@ BOOL WINAPI GetProcessDEPPolicy(HANDLE process, LPDWORD flags, PBOOL permanent)
|
||||
if (flags)
|
||||
{
|
||||
*flags = 0;
|
||||
- if (dep_flags & MEM_EXECUTE_OPTION_DISABLE)
|
||||
- *flags |= PROCESS_DEP_ENABLE;
|
||||
- if (dep_flags & MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION)
|
||||
- *flags |= PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION;
|
||||
+ if (system_DEP_policy != AlwaysOff)
|
||||
+ {
|
||||
+ if (dep_flags & MEM_EXECUTE_OPTION_DISABLE || system_DEP_policy == AlwaysOn)
|
||||
+ *flags |= PROCESS_DEP_ENABLE;
|
||||
+ if (dep_flags & MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION)
|
||||
+ *flags |= PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION;
|
||||
+ }
|
||||
}
|
||||
|
||||
- if (permanent) *permanent = (dep_flags & MEM_EXECUTE_OPTION_PERMANENT) != 0;
|
||||
+ if (permanent)
|
||||
+ {
|
||||
+ *permanent = (dep_flags & MEM_EXECUTE_OPTION_PERMANENT) != 0;
|
||||
+ if (system_DEP_policy == AlwaysOn || system_DEP_policy == AlwaysOff)
|
||||
+ *permanent = TRUE;
|
||||
+ }
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [24125] kernel32: Implement SetProcessDEPPolicy.
|
@@ -1,28 +0,0 @@
|
||||
From dc2ee56fbd2ed96f69ab5ccad4ff7666165760d4 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 9 Dec 2020 11:46:58 -0500
|
||||
Subject: [PATCH] winegstreamer: Correct mistaken enum value in ProcessMessage.
|
||||
|
||||
This is the message session relies on succeeding.
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
dlls/winegstreamer/audioconvert.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c
|
||||
index c5762bfdc60..82467b2f4e2 100644
|
||||
--- a/dlls/winegstreamer/audioconvert.c
|
||||
+++ b/dlls/winegstreamer/audioconvert.c
|
||||
@@ -517,7 +517,7 @@ static HRESULT WINAPI audio_converter_ProcessMessage(IMFTransform *iface, MFT_ME
|
||||
|
||||
switch(message)
|
||||
{
|
||||
- case MFT_MESSAGE_NOTIFY_START_OF_STREAM:
|
||||
+ case MFT_MESSAGE_NOTIFY_BEGIN_STREAMING:
|
||||
return S_OK;
|
||||
default:
|
||||
FIXME("Unhandled message type %x.\n", message);
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -1,18 +1,19 @@
|
||||
From 0c493f7590ba2d7b90cf44c389378aacae8f6fe0 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 18 Nov 2020 14:31:00 -0600
|
||||
Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for audio
|
||||
conversion transform.
|
||||
Subject: [PATCH resend 3/5] winegstreamer: Implement ::Process(Input/Output) for audio conversion transform.
|
||||
Message-Id: <20210118193047.267366-3-dlesho@codeweavers.com>
|
||||
Date: Mon, 18 Jan 2021 14:30:45 -0500
|
||||
In-Reply-To: <20210118193047.267366-1-dlesho@codeweavers.com>
|
||||
References: <20210118193047.267366-1-dlesho@codeweavers.com>
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
dlls/winegstreamer/audioconvert.c | 175 +++++++++++++++++++++++++++++-
|
||||
dlls/winegstreamer/audioconvert.c | 188 ++++++++++++++++++++++++++++--
|
||||
dlls/winegstreamer/gst_private.h | 1 +
|
||||
dlls/winegstreamer/mfplat.c | 69 ++++++++++++
|
||||
3 files changed, 239 insertions(+), 6 deletions(-)
|
||||
dlls/winegstreamer/mfplat.c | 69 +++++++++++
|
||||
3 files changed, 250 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c
|
||||
index 7fb0dee99f6..631c57d6d55 100644
|
||||
index 85f44dd8856..e16fc6f1a78 100644
|
||||
--- a/dlls/winegstreamer/audioconvert.c
|
||||
+++ b/dlls/winegstreamer/audioconvert.c
|
||||
@@ -40,6 +40,8 @@ struct audio_converter
|
||||
@@ -20,7 +21,7 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
IMFMediaType *output_type;
|
||||
CRITICAL_SECTION cs;
|
||||
+ BOOL inflight;
|
||||
+ GstElement *container, *appsrc, *audioconvert, *resampler, *appsink;
|
||||
+ GstElement *container, *appsrc, *appsink;
|
||||
};
|
||||
|
||||
static struct audio_converter *impl_audio_converter_from_IMFTransform(IMFTransform *iface)
|
||||
@@ -32,35 +33,46 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
heap_free(transform);
|
||||
}
|
||||
|
||||
@@ -311,7 +314,8 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
if (!(input_caps = caps_from_mf_media_type(type)))
|
||||
return MF_E_INVALIDTYPE;
|
||||
@@ -295,6 +298,9 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
|
||||
- gst_caps_unref(input_caps);
|
||||
+ if (flags & MFT_SET_TYPE_TEST_ONLY)
|
||||
+ gst_caps_unref(input_caps);
|
||||
}
|
||||
EnterCriticalSection(&converter->cs);
|
||||
|
||||
+ converter->inflight = FALSE;
|
||||
+ gst_element_set_state(converter->container, GST_STATE_READY);
|
||||
+
|
||||
if (converter->input_type)
|
||||
{
|
||||
IMFMediaType_Release(converter->input_type);
|
||||
@@ -326,14 +332,17 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
if (!(input_caps = caps_from_mf_media_type(type)))
|
||||
return MF_E_INVALIDTYPE;
|
||||
|
||||
- gst_caps_unref(input_caps);
|
||||
-
|
||||
if (flags & MFT_SET_TYPE_TEST_ONLY)
|
||||
@@ -320,6 +324,7 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
+ {
|
||||
+ gst_caps_unref(input_caps);
|
||||
return S_OK;
|
||||
+ }
|
||||
|
||||
EnterCriticalSection(&converter->cs);
|
||||
|
||||
hr = S_OK;
|
||||
+ converter->inflight = FALSE;
|
||||
+ gst_element_set_state(converter->container, GST_STATE_READY);
|
||||
|
||||
if (type)
|
||||
{
|
||||
@@ -329,6 +334,9 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type);
|
||||
if (!converter->input_type)
|
||||
hr = MFCreateMediaType(&converter->input_type);
|
||||
@@ -341,12 +350,18 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type);
|
||||
|
||||
+ g_object_set(converter->appsrc, "caps", input_caps, NULL);
|
||||
+ gst_caps_unref(input_caps);
|
||||
+ g_object_set(converter->appsrc, "caps", input_caps, NULL);
|
||||
+ gst_caps_unref(input_caps);
|
||||
+
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IMFMediaType_Release(converter->input_type);
|
||||
@@ -341,6 +349,9 @@ static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IMFMediaType_Release(converter->input_type);
|
||||
converter->input_type = NULL;
|
||||
}
|
||||
|
||||
@@ -70,35 +82,46 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
LeaveCriticalSection(&converter->cs);
|
||||
|
||||
return hr;
|
||||
@@ -386,7 +397,8 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
if (!(output_caps = caps_from_mf_media_type(type)))
|
||||
return MF_E_INVALIDTYPE;
|
||||
@@ -375,6 +390,9 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
|
||||
- gst_caps_unref(output_caps);
|
||||
+ if (flags & MFT_SET_TYPE_TEST_ONLY)
|
||||
+ gst_caps_unref(output_caps);
|
||||
}
|
||||
EnterCriticalSection(&converter->cs);
|
||||
|
||||
+ converter->inflight = FALSE;
|
||||
+ gst_element_set_state(converter->container, GST_STATE_READY);
|
||||
+
|
||||
if (converter->output_type)
|
||||
{
|
||||
IMFMediaType_Release(converter->output_type);
|
||||
@@ -406,14 +424,17 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
if (!(output_caps = caps_from_mf_media_type(type)))
|
||||
return MF_E_INVALIDTYPE;
|
||||
|
||||
- gst_caps_unref(output_caps);
|
||||
-
|
||||
if (flags & MFT_SET_TYPE_TEST_ONLY)
|
||||
@@ -395,6 +407,7 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
+ {
|
||||
+ gst_caps_unref(output_caps);
|
||||
return S_OK;
|
||||
+ }
|
||||
|
||||
EnterCriticalSection(&converter->cs);
|
||||
|
||||
hr = S_OK;
|
||||
+ converter->inflight = FALSE;
|
||||
+ gst_element_set_state(converter->container, GST_STATE_READY);
|
||||
|
||||
if (type)
|
||||
{
|
||||
@@ -404,6 +417,9 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type);
|
||||
if (!converter->output_type)
|
||||
hr = MFCreateMediaType(&converter->output_type);
|
||||
@@ -421,12 +442,18 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type);
|
||||
|
||||
+ g_object_set(converter->appsink, "caps", output_caps, NULL);
|
||||
+ gst_caps_unref(output_caps);
|
||||
+ g_object_set(converter->appsink, "caps", output_caps, NULL);
|
||||
+ gst_caps_unref(output_caps);
|
||||
+
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IMFMediaType_Release(converter->output_type);
|
||||
@@ -416,6 +432,9 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
|
||||
if (FAILED(hr))
|
||||
{
|
||||
IMFMediaType_Release(converter->output_type);
|
||||
converter->output_type = NULL;
|
||||
}
|
||||
|
||||
@@ -108,7 +131,7 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
LeaveCriticalSection(&converter->cs);
|
||||
|
||||
return hr;
|
||||
@@ -479,17 +498,102 @@ static HRESULT WINAPI audio_converter_ProcessMessage(IMFTransform *iface, MFT_ME
|
||||
@@ -538,17 +565,102 @@ static HRESULT WINAPI audio_converter_ProcessMessage(IMFTransform *iface, MFT_ME
|
||||
|
||||
static HRESULT WINAPI audio_converter_ProcessInput(IMFTransform *iface, DWORD id, IMFSample *sample, DWORD flags)
|
||||
{
|
||||
@@ -151,7 +174,7 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
+ gst_buffer_unref(gst_buffer);
|
||||
+ if (ret != GST_FLOW_OK)
|
||||
+ {
|
||||
+ ERR("Couldn't push buffer ret = %d (%s)\n", ret, gst_flow_get_name(ret));
|
||||
+ ERR("Couldn't push buffer ret, (%s)\n", gst_flow_get_name(ret));
|
||||
+ LeaveCriticalSection(&converter->cs);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
@@ -215,7 +238,15 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
}
|
||||
|
||||
static const IMFTransformVtbl audio_converter_vtbl =
|
||||
@@ -537,6 +641,65 @@ HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
@@ -583,6 +695,7 @@ static const IMFTransformVtbl audio_converter_vtbl =
|
||||
|
||||
HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
{
|
||||
+ GstElement *audioconvert, *resampler;
|
||||
struct audio_converter *object;
|
||||
|
||||
TRACE("%s %p\n", debugstr_guid(riid), ret);
|
||||
@@ -596,6 +709,65 @@ HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
InitializeCriticalSection(&object->cs);
|
||||
object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_converter_lock");
|
||||
|
||||
@@ -230,23 +261,23 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
+ }
|
||||
+ gst_bin_add(GST_BIN(object->container), object->appsrc);
|
||||
+
|
||||
+ if (!(object->audioconvert = gst_element_factory_make("audioconvert", NULL)))
|
||||
+ if (!(audioconvert = gst_element_factory_make("audioconvert", NULL)))
|
||||
+ {
|
||||
+ ERR("Failed to create audioconvert, are %u-bit Gstreamer \"base\" plugins installed?\n",
|
||||
+ 8 * (int)sizeof(void *));
|
||||
+ IMFTransform_Release(&object->IMFTransform_iface);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
+ gst_bin_add(GST_BIN(object->container), object->audioconvert);
|
||||
+ gst_bin_add(GST_BIN(object->container), audioconvert);
|
||||
+
|
||||
+ if (!(object->resampler = gst_element_factory_make("audioresample", NULL)))
|
||||
+ if (!(resampler = gst_element_factory_make("audioresample", NULL)))
|
||||
+ {
|
||||
+ ERR("Failed to create audioresample, are %u-bit Gstreamer \"base\" plugins installed?\n",
|
||||
+ 8 * (int)sizeof(void *));
|
||||
+ IMFTransform_Release(&object->IMFTransform_iface);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
+ gst_bin_add(GST_BIN(object->container), object->resampler);
|
||||
+ gst_bin_add(GST_BIN(object->container), resampler);
|
||||
+
|
||||
+ if (!(object->appsink = gst_element_factory_make("appsink", NULL)))
|
||||
+ {
|
||||
@@ -257,21 +288,21 @@ index 7fb0dee99f6..631c57d6d55 100644
|
||||
+ }
|
||||
+ gst_bin_add(GST_BIN(object->container), object->appsink);
|
||||
+
|
||||
+ if (!gst_element_link(object->appsrc, object->audioconvert))
|
||||
+ if (!gst_element_link(object->appsrc, audioconvert))
|
||||
+ {
|
||||
+ ERR("Failed to link appsrc to audioconvert\n");
|
||||
+ IMFTransform_Release(&object->IMFTransform_iface);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
+
|
||||
+ if (!gst_element_link(object->audioconvert, object->resampler))
|
||||
+ if (!gst_element_link(audioconvert, resampler))
|
||||
+ {
|
||||
+ ERR("Failed to link audioconvert to resampler\n");
|
||||
+ IMFTransform_Release(&object->IMFTransform_iface);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
+
|
||||
+ if (!gst_element_link(object->resampler, object->appsink))
|
||||
+ if (!gst_element_link(resampler, object->appsink))
|
||||
+ {
|
||||
+ ERR("Failed to link resampler to appsink\n");
|
||||
+ IMFTransform_Release(&object->IMFTransform_iface);
|
||||
@@ -294,7 +325,7 @@ index 9518f721504..14b6a011ac2 100644
|
||||
HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index f300988fc5c..883084b2d89 100644
|
||||
index f300988fc5c..b2b5b247dac 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -865,3 +865,72 @@ done:
|
||||
@@ -302,7 +333,7 @@ index f300988fc5c..883084b2d89 100644
|
||||
return out;
|
||||
}
|
||||
+
|
||||
+GstBuffer* gst_buffer_from_mf_sample(IMFSample *mf_sample)
|
||||
+GstBuffer *gst_buffer_from_mf_sample(IMFSample *mf_sample)
|
||||
+{
|
||||
+ GstBuffer *out = gst_buffer_new();
|
||||
+ IMFMediaBuffer *mf_buffer = NULL;
|
||||
@@ -339,7 +370,7 @@ index f300988fc5c..883084b2d89 100644
|
||||
+ memory = gst_allocator_alloc(NULL, buffer_size, NULL);
|
||||
+ gst_memory_resize(memory, 0, buffer_size);
|
||||
+
|
||||
+ if (!(gst_memory_map(memory, &map_info, GST_MAP_WRITE)))
|
||||
+ if (!gst_memory_map(memory, &map_info, GST_MAP_WRITE))
|
||||
+ {
|
||||
+ hr = E_FAIL;
|
||||
+ goto fail;
|
||||
@@ -370,6 +401,7 @@ index f300988fc5c..883084b2d89 100644
|
||||
+ gst_buffer_unref(out);
|
||||
+ return NULL;
|
||||
+}
|
||||
--
|
||||
2.29.2
|
||||
|
||||
--
|
||||
2.30.0
|
||||
|
||||
|
@@ -1,8 +1,9 @@
|
||||
From 91a772eb1cb4ec9e86b4ab007743a99a8bd75265 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Wed, 18 Nov 2020 14:34:56 -0600
|
||||
Subject: [PATCH] winegstreamer: Implement Get*Attributes functions for audio
|
||||
converter transform.
|
||||
Subject: [PATCH resend 5/5] winegstreamer: Semi-stub Get*Attributes functions for audio converter transform.
|
||||
Message-Id: <20210118193047.267366-5-dlesho@codeweavers.com>
|
||||
Date: Mon, 18 Jan 2021 14:30:47 -0500
|
||||
In-Reply-To: <20210118193047.267366-1-dlesho@codeweavers.com>
|
||||
References: <20210118193047.267366-1-dlesho@codeweavers.com>
|
||||
|
||||
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
---
|
||||
@@ -10,7 +11,7 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
|
||||
1 file changed, 33 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c
|
||||
index d204d9582ba..556aba44fc9 100644
|
||||
index a95fc5506e7..2a5f87fec94 100644
|
||||
--- a/dlls/winegstreamer/audioconvert.c
|
||||
+++ b/dlls/winegstreamer/audioconvert.c
|
||||
@@ -37,6 +37,8 @@ struct audio_converter
|
||||
@@ -33,7 +34,7 @@ index d204d9582ba..556aba44fc9 100644
|
||||
gst_object_unref(transform->container);
|
||||
heap_free(transform);
|
||||
}
|
||||
@@ -152,9 +158,14 @@ static HRESULT WINAPI audio_converter_GetOutputStreamInfo(IMFTransform *iface, D
|
||||
@@ -155,9 +161,14 @@ static HRESULT WINAPI audio_converter_GetOutputStreamInfo(IMFTransform *iface, D
|
||||
|
||||
static HRESULT WINAPI audio_converter_GetAttributes(IMFTransform *iface, IMFAttributes **attributes)
|
||||
{
|
||||
@@ -50,7 +51,7 @@ index d204d9582ba..556aba44fc9 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *iface, DWORD id,
|
||||
@@ -168,9 +179,14 @@ static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *ifa
|
||||
@@ -171,9 +182,14 @@ static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *ifa
|
||||
static HRESULT WINAPI audio_converter_GetOutputStreamAttributes(IMFTransform *iface, DWORD id,
|
||||
IMFAttributes **attributes)
|
||||
{
|
||||
@@ -67,15 +68,15 @@ index d204d9582ba..556aba44fc9 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI audio_converter_DeleteInputStream(IMFTransform *iface, DWORD id)
|
||||
@@ -644,6 +660,7 @@ static const IMFTransformVtbl audio_converter_vtbl =
|
||||
HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
@@ -715,6 +731,7 @@ HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
{
|
||||
GstElement *audioconvert, *resampler;
|
||||
struct audio_converter *object;
|
||||
+ HRESULT hr;
|
||||
|
||||
TRACE("%s %p\n", debugstr_guid(riid), ret);
|
||||
|
||||
@@ -656,6 +673,18 @@ HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
@@ -727,6 +744,18 @@ HRESULT audio_converter_create(REFIID riid, void **ret)
|
||||
InitializeCriticalSection(&object->cs);
|
||||
object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_converter_lock");
|
||||
|
||||
@@ -94,6 +95,7 @@ index d204d9582ba..556aba44fc9 100644
|
||||
object->container = gst_bin_new(NULL);
|
||||
|
||||
if (!(object->appsrc = gst_element_factory_make("appsrc", NULL)))
|
||||
--
|
||||
2.29.2
|
||||
|
||||
--
|
||||
2.30.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From f84c2f0717e5c90f837262e88dad4b1fdcbc64d2 Mon Sep 17 00:00:00 2001
|
||||
From 32a148c4f8b2c62c7c227b17e8fba2a7aac8ae62 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Lesho <dlesho@codeweavers.com>
|
||||
Date: Mon, 16 Mar 2020 12:09:39 -0500
|
||||
Subject: [PATCH] winegstreamer: Implement decoder MFT on gstreamer.
|
||||
@@ -28,7 +28,7 @@ index 4f6b428f067..81c670c17e4 100644
|
||||
pin.c \
|
||||
qualitycontrol.c \
|
||||
diff --git a/dlls/winegstreamer/gst_cbs.c b/dlls/winegstreamer/gst_cbs.c
|
||||
index 51aaefa911d..261a5b9f4ce 100644
|
||||
index 90c34b1cb39..cfa3a0f566d 100644
|
||||
--- a/dlls/winegstreamer/gst_cbs.c
|
||||
+++ b/dlls/winegstreamer/gst_cbs.c
|
||||
@@ -51,6 +51,8 @@ static void CALLBACK perform_cb(TP_CALLBACK_INSTANCE *instance, void *user)
|
||||
@@ -40,7 +40,7 @@ index 51aaefa911d..261a5b9f4ce 100644
|
||||
|
||||
pthread_mutex_lock(&cbdata->lock);
|
||||
cbdata->finished = 1;
|
||||
@@ -404,3 +406,66 @@ void mf_src_no_more_pads_wrapper(GstElement *element, gpointer user)
|
||||
@@ -260,3 +262,66 @@ void mf_src_no_more_pads_wrapper(GstElement *element, gpointer user)
|
||||
|
||||
call_cb(&cbdata);
|
||||
}
|
||||
@@ -108,10 +108,10 @@ index 51aaefa911d..261a5b9f4ce 100644
|
||||
+ return cbdata.u.new_sample_data.ret;
|
||||
+}
|
||||
diff --git a/dlls/winegstreamer/gst_cbs.h b/dlls/winegstreamer/gst_cbs.h
|
||||
index a48999bbf71..6659aedefa5 100644
|
||||
index cbd9a630885..64b037ffed0 100644
|
||||
--- a/dlls/winegstreamer/gst_cbs.h
|
||||
+++ b/dlls/winegstreamer/gst_cbs.h
|
||||
@@ -53,6 +53,12 @@ enum CB_TYPE {
|
||||
@@ -42,6 +42,12 @@ enum CB_TYPE {
|
||||
MF_SRC_STREAM_REMOVED,
|
||||
MF_SRC_NO_MORE_PADS,
|
||||
MEDIA_SOURCE_MAX,
|
||||
@@ -124,7 +124,7 @@ index a48999bbf71..6659aedefa5 100644
|
||||
};
|
||||
|
||||
struct cb_data {
|
||||
@@ -137,6 +143,17 @@ struct cb_data {
|
||||
@@ -100,6 +106,17 @@ struct cb_data {
|
||||
GstQuery *query;
|
||||
gboolean ret;
|
||||
} query_sink_data;
|
||||
@@ -142,15 +142,15 @@ index a48999bbf71..6659aedefa5 100644
|
||||
} u;
|
||||
|
||||
int finished;
|
||||
@@ -148,6 +165,7 @@ struct cb_data {
|
||||
@@ -111,6 +128,7 @@ struct cb_data {
|
||||
void mark_wine_thread(void) DECLSPEC_HIDDEN;
|
||||
void perform_cb_gstdemux(struct cb_data *data) DECLSPEC_HIDDEN;
|
||||
void perform_cb_media_source(struct cb_data *data) DECLSPEC_HIDDEN;
|
||||
+void perform_cb_mf_decode(struct cb_data *data) DECLSPEC_HIDDEN;
|
||||
|
||||
GstBusSyncReply watch_bus_wrapper(GstBus *bus, GstMessage *msg, gpointer user) DECLSPEC_HIDDEN;
|
||||
void existing_new_pad_wrapper(GstElement *bin, GstPad *pad, gpointer user) DECLSPEC_HIDDEN;
|
||||
@@ -172,5 +190,10 @@ GstBusSyncReply mf_src_bus_watch_wrapper(GstBus *bus, GstMessage *message, gpoin
|
||||
GstFlowReturn got_data_wrapper(GstPad *pad, GstObject *parent, GstBuffer *buf) DECLSPEC_HIDDEN;
|
||||
@@ -124,5 +142,10 @@ GstBusSyncReply mf_src_bus_watch_wrapper(GstBus *bus, GstMessage *message, gpoin
|
||||
void mf_src_stream_added_wrapper(GstElement *bin, GstPad *pad, gpointer user) DECLSPEC_HIDDEN;
|
||||
void mf_src_stream_removed_wrapper(GstElement *element, GstPad *pad, gpointer user) DECLSPEC_HIDDEN;
|
||||
void mf_src_no_more_pads_wrapper(GstElement *element, gpointer user) DECLSPEC_HIDDEN;
|
||||
@@ -162,10 +162,10 @@ index a48999bbf71..6659aedefa5 100644
|
||||
|
||||
#endif
|
||||
diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h
|
||||
index dcf76554b6d..019cce5fad5 100644
|
||||
index 7000cb48a52..8494b34be98 100644
|
||||
--- a/dlls/winegstreamer/gst_private.h
|
||||
+++ b/dlls/winegstreamer/gst_private.h
|
||||
@@ -75,6 +75,7 @@ BOOL init_gstreamer(void) DECLSPEC_HIDDEN;
|
||||
@@ -77,6 +77,7 @@ BOOL init_gstreamer(void) DECLSPEC_HIDDEN;
|
||||
|
||||
void start_dispatch_thread(void) DECLSPEC_HIDDEN;
|
||||
|
||||
@@ -173,7 +173,7 @@ index dcf76554b6d..019cce5fad5 100644
|
||||
extern HRESULT mfplat_get_class_object(REFCLSID rclsid, REFIID riid, void **obj) DECLSPEC_HIDDEN;
|
||||
extern HRESULT mfplat_DllRegisterServer(void) DECLSPEC_HIDDEN;
|
||||
|
||||
@@ -85,6 +86,12 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) DECLSPEC_HIDDEN;
|
||||
@@ -87,6 +88,12 @@ GstCaps *caps_from_mf_media_type(IMFMediaType *type) DECLSPEC_HIDDEN;
|
||||
IMFSample *mf_sample_from_gst_buffer(GstBuffer *in) DECLSPEC_HIDDEN;
|
||||
GstBuffer *gst_buffer_from_mf_sample(IMFSample *in) DECLSPEC_HIDDEN;
|
||||
|
||||
@@ -1513,7 +1513,7 @@ index 00000000000..7055ffa54fc
|
||||
+ }
|
||||
+}
|
||||
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
|
||||
index bf3486d2be8..b604f6df066 100644
|
||||
index 72fd31eb052..77859cb277f 100644
|
||||
--- a/dlls/winegstreamer/mfplat.c
|
||||
+++ b/dlls/winegstreamer/mfplat.c
|
||||
@@ -410,6 +410,16 @@ static const GUID CLSID_WINEAudioConverter = {0x6a170414,0xaad9,0x4693,{0xb8,0x0
|
||||
@@ -1615,7 +1615,7 @@ index bf3486d2be8..b604f6df066 100644
|
||||
/* audio-specific-config is stored here */
|
||||
};
|
||||
diff --git a/dlls/winegstreamer/winegstreamer_classes.idl b/dlls/winegstreamer/winegstreamer_classes.idl
|
||||
index 47c10a09cf0..fe8649c690c 100644
|
||||
index 1b203815330..05365e5e298 100644
|
||||
--- a/dlls/winegstreamer/winegstreamer_classes.idl
|
||||
+++ b/dlls/winegstreamer/winegstreamer_classes.idl
|
||||
@@ -73,3 +73,15 @@ coclass WINEAudioConverter { }
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From 5c873ba9b51531c7e41b77424b46264ed712b972 Mon Sep 17 00:00:00 2001
|
||||
From f4dee57bb2912eb76741eaf74ee07397409167df Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 11 Sep 2020 17:55:59 +1000
|
||||
Subject: [PATCH 1/3] include: Remove interfaces already define in msxml6.idl
|
||||
Subject: [PATCH] include: Remove interfaces already define in msxml6.idl
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
@@ -10,10 +10,11 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
dlls/msxml3/tests/schema.c | 5 ++
|
||||
dlls/msxml3/uuid.c | 11 ++++
|
||||
include/msxml2.idl | 109 ----------------------------------
|
||||
5 files changed, 18 insertions(+), 109 deletions(-)
|
||||
include/msxml6.idl | 24 ++++----
|
||||
6 files changed, 30 insertions(+), 121 deletions(-)
|
||||
|
||||
diff --git a/dlls/msxml3/factory.c b/dlls/msxml3/factory.c
|
||||
index 445cfbf730..b8452ff4b4 100644
|
||||
index 445cfbf730d..b8452ff4b4e 100644
|
||||
--- a/dlls/msxml3/factory.c
|
||||
+++ b/dlls/msxml3/factory.c
|
||||
@@ -35,6 +35,7 @@
|
||||
@@ -25,7 +26,7 @@ index 445cfbf730..b8452ff4b4 100644
|
||||
|
||||
/* undef the #define in msxml2 so that we can access the v.2 version
|
||||
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
|
||||
index 986f429cc1..db39919a41 100644
|
||||
index ab814c5f764..e8441311776 100644
|
||||
--- a/dlls/msxml3/tests/saxreader.c
|
||||
+++ b/dlls/msxml3/tests/saxreader.c
|
||||
@@ -29,6 +29,7 @@
|
||||
@@ -37,7 +38,7 @@ index 986f429cc1..db39919a41 100644
|
||||
#include "ocidl.h"
|
||||
#include "dispex.h"
|
||||
diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c
|
||||
index 4637d62f8b..805f05cb71 100644
|
||||
index d1622ffc7da..964e368bf84 100644
|
||||
--- a/dlls/msxml3/tests/schema.c
|
||||
+++ b/dlls/msxml3/tests/schema.c
|
||||
@@ -32,6 +32,11 @@
|
||||
@@ -53,7 +54,7 @@ index 4637d62f8b..805f05cb71 100644
|
||||
|
||||
#define EXPECT_HR(hr,hr_exp) \
|
||||
diff --git a/dlls/msxml3/uuid.c b/dlls/msxml3/uuid.c
|
||||
index 4abbe5e476..333d4f3d3c 100644
|
||||
index 4abbe5e4763..333d4f3d3c7 100644
|
||||
--- a/dlls/msxml3/uuid.c
|
||||
+++ b/dlls/msxml3/uuid.c
|
||||
@@ -41,6 +41,17 @@
|
||||
@@ -75,7 +76,7 @@ index 4abbe5e476..333d4f3d3c 100644
|
||||
* Note that because of a #define in msxml2.h, we end up initializing
|
||||
* CLSID_DOMDocument2 to be the v.3 version independent DOMDocument
|
||||
diff --git a/include/msxml2.idl b/include/msxml2.idl
|
||||
index 916e0e8ab3..1d1ba7a524 100644
|
||||
index 916e0e8ab3d..1d1ba7a5248 100644
|
||||
--- a/include/msxml2.idl
|
||||
+++ b/include/msxml2.idl
|
||||
@@ -1612,15 +1612,6 @@ coclass FreeThreadedDOMDocument40
|
||||
@@ -257,6 +258,48 @@ index 916e0e8ab3..1d1ba7a524 100644
|
||||
[
|
||||
helpstring("SAXAttributes"),
|
||||
progid("Msxml2.SAXAttributes"),
|
||||
diff --git a/include/msxml6.idl b/include/msxml6.idl
|
||||
index 5bfb21d04ae..bfea408ab21 100644
|
||||
--- a/include/msxml6.idl
|
||||
+++ b/include/msxml6.idl
|
||||
@@ -2946,18 +2946,6 @@ coclass DOMDocument60
|
||||
[default, source] dispinterface XMLDOMDocumentEvents;
|
||||
}
|
||||
|
||||
-[
|
||||
- helpstring("Free threaded XML DOM Document 6.0"),
|
||||
- progid("Msxml2.FreeThreadedDOMDocument.6.0"),
|
||||
- threading(both),
|
||||
- uuid(88d96a06-f192-11d4-a65f-0040963251e5),
|
||||
-]
|
||||
-coclass FreeThreadedDOMDocument60
|
||||
-{
|
||||
- [default] interface IXMLDOMDocument3;
|
||||
- [default, source] dispinterface XMLDOMDocumentEvents;
|
||||
-}
|
||||
-
|
||||
[
|
||||
helpstring("SAX XML Reader 6.0"),
|
||||
progid("Msxml2.SAXXMLReader.6.0"),
|
||||
@@ -3063,6 +3051,18 @@ coclass XSLTemplate60
|
||||
[default] interface IXSLTemplate;
|
||||
}
|
||||
|
||||
+[
|
||||
+ helpstring("Free threaded XML DOM Document 6.0"),
|
||||
+ progid("Msxml2.FreeThreadedDOMDocument.6.0"),
|
||||
+ threading(both),
|
||||
+ uuid(88d96a06-f192-11d4-a65f-0040963251e5),
|
||||
+]
|
||||
+coclass FreeThreadedDOMDocument60
|
||||
+{
|
||||
+ [default] interface IXMLDOMDocument3;
|
||||
+ [default, source] dispinterface XMLDOMDocumentEvents;
|
||||
+}
|
||||
+
|
||||
[
|
||||
helpstring("XML HTTP 6.0"),
|
||||
progid("Msxml2.XMLHTTP.6.0"),
|
||||
--
|
||||
2.28.0
|
||||
2.29.2
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From cf32f7460fe0df6bb9dfb80c5a55473246ff4018 Mon Sep 17 00:00:00 2001
|
||||
From 0582e37b52e2484a6f27b99b25fdf62afd31a4df Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 3 Sep 2020 17:59:10 +1000
|
||||
Subject: [PATCH 2/3] include: Add IXMLHTTPRequest2/3 interfaces
|
||||
Subject: [PATCH] include: Add IXMLHTTPRequest2/3 interfaces
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
@@ -9,7 +9,7 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
1 file changed, 106 insertions(+)
|
||||
|
||||
diff --git a/include/msxml6.idl b/include/msxml6.idl
|
||||
index 5bfb21d04a..5473fa0bd9 100644
|
||||
index bfea408ab21..1f35e965124 100644
|
||||
--- a/include/msxml6.idl
|
||||
+++ b/include/msxml6.idl
|
||||
@@ -244,6 +244,8 @@ typedef enum _SCHEMAWHITESPACE
|
||||
@@ -128,8 +128,8 @@ index 5bfb21d04a..5473fa0bd9 100644
|
||||
[
|
||||
object,
|
||||
dual,
|
||||
@@ -1607,6 +1702,17 @@ interface ISAXDeclHandler : IUnknown
|
||||
[in] int nSystemId);
|
||||
@@ -3063,6 +3158,17 @@ coclass FreeThreadedDOMDocument60
|
||||
[default, source] dispinterface XMLDOMDocumentEvents;
|
||||
}
|
||||
|
||||
+[
|
||||
@@ -144,8 +144,8 @@ index 5bfb21d04a..5473fa0bd9 100644
|
||||
+}
|
||||
+
|
||||
[
|
||||
object,
|
||||
local,
|
||||
helpstring("XML HTTP 6.0"),
|
||||
progid("Msxml2.XMLHTTP.6.0"),
|
||||
--
|
||||
2.28.0
|
||||
2.29.2
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user