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
32 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 | ||
|
7ab49f09a2 | ||
|
a3d08de2b8 | ||
|
1c969cbbed | ||
|
0e7472e7a3 | ||
|
f3e785a3a8 | ||
|
dfddef9654 | ||
|
d87ec36ccf | ||
|
a3710ff21f | ||
|
0e67af3d09 | ||
|
8b1e0eec1d | ||
|
b8ca0eae9f |
25
patches/dsound-EAX/0022-dsound-Enable-EAX-by-default.patch
Normal file
25
patches/dsound-EAX/0022-dsound-Enable-EAX-by-default.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
From 25450e6cf073bde4f26fec40c59224087017f332 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 1 Jan 2021 13:32:48 +1100
|
||||
Subject: [PATCH] dsound: Enable EAX by default
|
||||
|
||||
---
|
||||
dlls/dsound/dsound_main.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c
|
||||
index e12c2208199..bda9a446a08 100644
|
||||
--- a/dlls/dsound/dsound_main.c
|
||||
+++ b/dlls/dsound/dsound_main.c
|
||||
@@ -93,7 +93,7 @@ const WCHAR wine_vxd_drv[] = L"winemm.vxd";
|
||||
/* All default settings, you most likely don't want to touch these, see wiki on UsefulRegistryKeys */
|
||||
int ds_hel_buflen = 32768 * 2;
|
||||
int ds_hq_buffers_max = 4;
|
||||
-BOOL ds_eax_enabled = FALSE;
|
||||
+BOOL ds_eax_enabled = TRUE;
|
||||
static HINSTANCE instance;
|
||||
|
||||
#define IS_OPTION_TRUE(ch) \
|
||||
--
|
||||
2.29.2
|
||||
|
@@ -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,2 +1,3 @@
|
||||
Fixes: Software support for Environmental Audio Extensions (EAX)
|
||||
Fixes: [42886] Mushroom Wars - Has no sounds.
|
||||
Depends: dsound-Fast_Mixer
|
||||
|
@@ -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 { }
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user