Compare commits

..

18 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
069adfd1b0 Release v6.14 2021-07-31 12:05:20 +10:00
Zebediah Figura
c91c63a5da ntdll-Junction_Points: Updates from Erich E. Hoover.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50770
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51438
2021-07-30 18:44:16 -05:00
Alistair Leslie-Hughes
f7c80250ec Rebase against 10fb33026f2a55209dea0fb00caa279610027a0f. 2021-07-30 09:10:58 +10:00
Alistair Leslie-Hughes
b059114710 Updated nvcuda-CUDA_Support patchset 2021-07-29 09:46:04 +10:00
Alistair Leslie-Hughes
f27610e7e7 Rebase against 5dffe2263de41e76100ba0acd7c717267dc4c878. 2021-07-29 09:00:26 +10:00
Alistair Leslie-Hughes
9da0fe04d3 Rebase against 04d52eb83fa5c37cfe1100f435e36c2f78918338. 2021-07-28 08:40:53 +10:00
Alistair Leslie-Hughes
dc38777093 Rebase against a5f787ac445a682ea7ced5dd78c3516d4b8b9311. 2021-07-24 10:32:46 +10:00
Alistair Leslie-Hughes
b57bf86ec0 Updated mfplat-streaming-support patchset 2021-07-23 12:30:40 +10:00
Zebediah Figura
4e99d1b2a8 Rebase against c518a5362b925379b1a79e8323d60e19863effc1. 2021-07-22 17:41:21 -05:00
Alistair Leslie-Hughes
8ad669e434 Rebase against 384fc71a480b48443a6a899cbf3470dbf4fe2214. 2021-07-22 09:17:36 +10:00
Alistair Leslie-Hughes
52dd338148 Release v6.13 2021-07-21 09:59:17 +10:00
Alistair Leslie-Hughes
f841424edd Rebase against feb088b2247e1722b848ac0d67483596d33758ba. 2021-07-21 08:53:44 +10:00
Alistair Leslie-Hughes
5e8fbbf200 Rebase against d60c450c7be196c2072f74e34f7760d39e3bad32. 2021-07-20 11:27:20 +10:00
Alistair Leslie-Hughes
183fd3e089 Updated winepulse-PulseAudio_Support patchset 2021-07-18 11:55:05 +10:00
Alistair Leslie-Hughes
092f3b1ed1 Rebase against 49cde0995827b24aa9c1ef1b6a0372797f4166e0. 2021-07-10 17:14:03 +10:00
Alistair Leslie-Hughes
e59eb7639a Rebase against 6763ed84cf0629dd7d1495263e1e3ea9aaf3d663. 2021-07-08 11:16:34 +10:00
Alistair Leslie-Hughes
a0716c9cfe Rebase against adffa11609093c3c21cf43970bbecda1b2c43eb1. 2021-07-07 12:21:45 +10:00
Alistair Leslie-Hughes
fcf7b80107 Rebase against 14f03e84d46dbd94ae2e3711687420f816dc784f. 2021-07-06 09:05:43 +10:00
110 changed files with 882 additions and 957 deletions

View File

@@ -1,15 +1,15 @@
From e51b05c3a9d03e4dd84a107a30841d95f8a519c3 Mon Sep 17 00:00:00 2001
From 916189d1cdf149f16867870121171e20f129da9f Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
branch name and version.
---
dlls/ntdll/loader.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
dlls/ntdll/loader.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index ee453700e51..c2d4b3c2f86 100644
index 3339596944a..1d435f88755 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -44,6 +44,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -20,7 +20,7 @@ index ee453700e51..c2d4b3c2f86 100644
#ifdef _WIN64
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
@@ -3307,6 +3308,7 @@ void WINAPI LdrShutdownProcess(void)
@@ -3373,6 +3374,7 @@ void WINAPI LdrShutdownProcess(void)
process_detach();
}
@@ -28,7 +28,7 @@ index ee453700e51..c2d4b3c2f86 100644
/******************************************************************
* RtlExitUserProcess (NTDLL.@)
@@ -3673,6 +3675,9 @@ static void init_wow64(void)
@@ -3783,6 +3785,9 @@ static void init_wow64( CONTEXT *context )
*/
void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR unknown3, ULONG_PTR unknown4 )
{
@@ -38,9 +38,9 @@ index ee453700e51..c2d4b3c2f86 100644
static int attach_done;
int i;
NTSTATUS status;
@@ -3753,6 +3758,17 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
}
else wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
@@ -3869,6 +3874,16 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
if (NtCurrentTeb()->WowTebOffset) init_wow64( context );
#endif
+ RtlInitUnicodeString( &staging_event_string, L"\\__wine_staging_warn_event" );
+ InitializeObjectAttributes( &staging_event_attr, &staging_event_string, OBJ_OPENIF, NULL, NULL );
@@ -51,7 +51,6 @@ index ee453700e51..c2d4b3c2f86 100644
+ }
+ else
+ WARN_(winediag)("wine-staging %s is a testing version containing experimental patches.\n", wine_get_version());
+
+
RtlAcquirePebLock();
InsertHeadList( &tls_links, &NtCurrentTeb()->TlsLinks );

View File

@@ -1,4 +1,4 @@
From 70c7589e029a19a3b048cdf5c222fb36e489ba69 Mon Sep 17 00:00:00 2001
From 4af235c5bc5797cae39578991b302b47052afcbb 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().
@@ -77,12 +77,12 @@ 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 1abc691811b..de4c75afcea 100644
index f5be91e09d4..b54874b5d3d 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -435,6 +435,10 @@ NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_
struct object_attributes *objattr;
@@ -440,6 +440,10 @@ NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_
*handle = 0;
if (type != NotificationEvent && type != SynchronizationEvent) return STATUS_INVALID_PARAMETER;
+
+ if (do_esync())
@@ -92,7 +92,7 @@ index 1abc691811b..de4c75afcea 100644
SERVER_START_REQ( create_event )
diff --git a/server/esync.c b/server/esync.c
index 226e70cd1ad..b9e0a455629 100644
index e41bbbf9349..f89f29150ea 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -203,6 +203,13 @@ struct semaphore
@@ -125,5 +125,5 @@ index 226e70cd1ad..b9e0a455629 100644
assert( 0 );
}
--
2.29.2
2.30.2

View File

@@ -1,4 +1,4 @@
From 8770d44fb2cdaf01cfd74321712b3b63a2906e31 Mon Sep 17 00:00:00 2001
From 1496c3a96452deeb4ca687bc61e2125bc82fff71 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:34:56 -0500
Subject: [PATCH] ntdll, server: Implement NtCreateMutant().
@@ -6,9 +6,9 @@ Subject: [PATCH] ntdll, server: Implement NtCreateMutant().
---
dlls/ntdll/unix/esync.c | 16 ++++++++++++++++
dlls/ntdll/unix/esync.h | 3 +++
dlls/ntdll/unix/sync.c | 3 +++
dlls/ntdll/unix/sync.c | 4 ++++
server/esync.c | 14 ++++++++++++++
4 files changed, 36 insertions(+)
4 files changed, 37 insertions(+)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index 88490e08ef9..df9eb2696a1 100644
@@ -59,13 +59,14 @@ index 8480a213b2a..38ebefc9eed 100644
BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 1d2e831964f..56292db271a 100644
index 47ab533d5c7..7e492320cee 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -597,6 +597,9 @@ NTSTATUS WINAPI NtCreateMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT
data_size_t len;
@@ -608,6 +608,10 @@ NTSTATUS WINAPI NtCreateMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT
struct object_attributes *objattr;
*handle = 0;
+
+ if (do_esync())
+ return esync_create_mutex( handle, access, attr, owned );
+
@@ -73,7 +74,7 @@ index 1d2e831964f..56292db271a 100644
SERVER_START_REQ( create_mutex )
diff --git a/server/esync.c b/server/esync.c
index ddee22432e5..12911fccb6a 100644
index ac59779a454..913104e3dd4 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -204,6 +204,13 @@ struct semaphore
@@ -105,5 +106,5 @@ index ddee22432e5..12911fccb6a 100644
assert( 0 );
}
--
2.28.0
2.30.2

View File

@@ -1,4 +1,4 @@
From a934f314a164256748e2e9764343504f7cf8050b Mon Sep 17 00:00:00 2001
From 7f04be3dd881287f1a74b7fe5829fa5917afa054 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:56:09 -0500
Subject: [PATCH] ntdll: Implement NtOpenSemaphore().
@@ -6,10 +6,10 @@ Subject: [PATCH] ntdll: Implement NtOpenSemaphore().
---
dlls/ntdll/unix/esync.c | 47 +++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.h | 2 ++
dlls/ntdll/unix/sync.c | 3 +++
dlls/ntdll/unix/sync.c | 4 ++++
server/esync.c | 31 +++++++++++++++++++++++++++
server/protocol.def | 12 +++++++++++
5 files changed, 95 insertions(+)
5 files changed, 96 insertions(+)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index 6d8653cd107..8e7e50ce777 100644
@@ -90,13 +90,14 @@ index bee08ff857f..2738e8b7f87 100644
extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 64f96a32ccf..35f2ac95d36 100644
index a51462abeac..36322f6afb6 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -349,6 +349,9 @@ NTSTATUS WINAPI NtOpenSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJEC
{
@@ -353,6 +353,10 @@ NTSTATUS WINAPI NtOpenSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJEC
NTSTATUS ret;
*handle = 0;
+
+ if (do_esync())
+ return esync_open_semaphore( handle, access, attr );
+
@@ -104,7 +105,7 @@ index 64f96a32ccf..35f2ac95d36 100644
SERVER_START_REQ( open_semaphore )
diff --git a/server/esync.c b/server/esync.c
index 12911fccb6a..1703608263f 100644
index 913104e3dd4..da97c6c140b 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -412,6 +412,37 @@ DECL_HANDLER(create_esync)
@@ -146,10 +147,10 @@ index 12911fccb6a..1703608263f 100644
* server. The client should only read from (i.e. wait on) this object. */
DECL_HANDLER(get_esync_fd)
diff --git a/server/protocol.def b/server/protocol.def
index 789bc56e7f1..5b8f66ffd80 100644
index 776d3d72dc2..575cf291bb0 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3690,6 +3690,18 @@ enum esync_type
@@ -3750,6 +3750,18 @@ enum esync_type
unsigned int shm_idx;
@END
@@ -169,5 +170,5 @@ index 789bc56e7f1..5b8f66ffd80 100644
@REQ(get_esync_fd)
obj_handle_t handle; /* handle to the object */
--
2.28.0
2.30.2

View File

@@ -1,4 +1,4 @@
From 9898e1c47bdba4bda336b9c17a20d34d68e66215 Mon Sep 17 00:00:00 2001
From 96393a0cd6acfcb87d11488e726d4e294e646c4f Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:58:19 -0500
Subject: [PATCH] ntdll: Implement NtOpenEvent().
@@ -42,11 +42,11 @@ index 2738e8b7f87..da1b72d4413 100644
extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 35f2ac95d36..9296b172f88 100644
index 36322f6afb6..6bc8200f46b 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -467,6 +467,9 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT
@@ -476,6 +476,9 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT
*handle = 0;
if ((ret = validate_open_object_attributes( attr ))) return ret;
+ if (do_esync())
@@ -56,5 +56,5 @@ index 35f2ac95d36..9296b172f88 100644
{
req->access = access;
--
2.28.0
2.30.2

View File

@@ -1,4 +1,4 @@
From 7f91f35e896ffb63409c1d1a619565f35a65ef7f Mon Sep 17 00:00:00 2001
From 995f2ecab37c47bb3112d11ce2313d37711965ca Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:59:35 -0500
Subject: [PATCH] ntdll: Implement NtOpenMutant().
@@ -42,11 +42,11 @@ index da1b72d4413..cb48e2cd022 100644
extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any,
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 9296b172f88..4a97cdd32fd 100644
index 6bc8200f46b..c1c57caab40 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -632,6 +632,9 @@ NTSTATUS WINAPI NtOpenMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT_A
@@ -646,6 +646,9 @@ NTSTATUS WINAPI NtOpenMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT_A
*handle = 0;
if ((ret = validate_open_object_attributes( attr ))) return ret;
+ if (do_esync())
@@ -56,5 +56,5 @@ index 9296b172f88..4a97cdd32fd 100644
{
req->access = access;
--
2.28.0
2.30.2

View File

@@ -1,4 +1,4 @@
From 8a91b7a88d96f735f7236afeed90c376a18f0eea Mon Sep 17 00:00:00 2001
From b034a39ba4e554aad252745996dacd9bf02d5d53 Mon Sep 17 00:00:00 2001
From: Daniel Wendt <daniel.wendt@linux.com>
Date: Fri, 15 Nov 2013 12:52:37 +0100
Subject: [PATCH] gdi32: fix for rotated Arc, ArcTo, Chord and Pie drawing
@@ -6,15 +6,15 @@ Subject: [PATCH] gdi32: fix for rotated Arc, ArcTo, Chord and Pie drawing
Wine-Bug: http://bugs.winehq.org/show_bug.cgi?id=34579
---
dlls/gdi32/dibdrv/graphics.c | 80 ++++++++++++++++++++++++++++++++++++++++++++
dlls/gdi32/dibdrv/graphics.c | 80 ++++++++++++++++++++++++++++++++++++
dlls/gdi32/gdi_private.h | 3 ++
2 files changed, 83 insertions(+)
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
index 7d71fbb..d269cc1 100644
index e4e2de8f99f..af82d63e15b 100644
--- a/dlls/gdi32/dibdrv/graphics.c
+++ b/dlls/gdi32/dibdrv/graphics.c
@@ -313,6 +313,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end
@@ -312,6 +312,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end
return pos - count;
}
@@ -75,7 +75,7 @@ index 7d71fbb..d269cc1 100644
/* backend for arc functions; extra_lines is -1 for ArcTo, 0 for Arc, 1 for Chord, 2 for Pie */
static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
INT start_x, INT start_y, INT end_x, INT end_y, INT extra_lines )
@@ -325,6 +379,22 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
@@ -324,6 +378,22 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
BOOL ret = TRUE;
HRGN outline = 0, interior = 0;
@@ -98,7 +98,7 @@ index 7d71fbb..d269cc1 100644
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
width = rect.right - rect.left;
@@ -358,6 +428,16 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
@@ -357,6 +427,16 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
points[count].y = rect.top + height / 2;
count++;
}
@@ -116,17 +116,17 @@ index 7d71fbb..d269cc1 100644
{
HeapFree( GetProcessHeap(), 0, points );
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 920cd1e..4949187 100644
index 105d72b23f0..6624a4f7cb7 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -608,4 +608,7 @@ extern void free_heap_bits( struct gdi_image_bits *bits ) DECLSPEC_HIDDEN;
extern HMODULE gdi32_module DECLSPEC_HIDDEN;
@@ -122,4 +122,7 @@ extern BOOL EMFDC_SetROP2( DC_ATTR *dc_attr, INT rop ) DECLSPEC_HIDDEN;
extern BOOL EMFDC_SetStretchBltMode( DC_ATTR *dc_attr, INT mode ) DECLSPEC_HIDDEN;
extern BOOL EMFDC_SetTextAlign( DC_ATTR *dc_attr, UINT align ) DECLSPEC_HIDDEN;
+BOOL xform_has_rotate_and_uniform_scale_and_shear( const XFORM *xform ) DECLSPEC_HIDDEN;
+BOOL xform_decompose_rotation_and_translation( XFORM *xform, XFORM *rotation_and_translation ) DECLSPEC_HIDDEN;
+
#endif /* __WINE_GDI_PRIVATE_H */
--
1.9.1
2.30.2

View File

@@ -1,18 +1,18 @@
From b278711b2c76680e6e26a114f74d7f7c26ff6328 Mon Sep 17 00:00:00 2001
From 6ccddc7e2faf2dbde5f20d983e3f64e0cb8e2821 Mon Sep 17 00:00:00 2001
From: Daniel Wendt <daniel.wendt@linux.com>
Date: Tue, 10 Dec 2013 14:55:32 +0100
Subject: [PATCH] gdi32: fix for rotated ellipse
Bug: http://bugs.winehq.org/show_bug.cgi?id=35331
---
dlls/gdi32/dibdrv/graphics.c | 60 +++++++++++++++++++++++++++++++-------------
dlls/gdi32/dibdrv/graphics.c | 60 +++++++++++++++++++++++++-----------
1 file changed, 42 insertions(+), 18 deletions(-)
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
index d269cc1..447aab5 100644
index 5d246eea07f..2b33233dee9 100644
--- a/dlls/gdi32/dibdrv/graphics.c
+++ b/dlls/gdi32/dibdrv/graphics.c
@@ -1555,6 +1555,23 @@ BOOL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
@@ -1534,6 +1534,23 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
BOOL ret = TRUE;
HRGN outline = 0, interior = 0;
@@ -36,13 +36,13 @@ index d269cc1..447aab5 100644
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
pt[0].x = pt[0].y = 0;
@@ -1575,23 +1592,6 @@ BOOL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
@@ -1554,23 +1571,6 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
return FALSE;
}
- if (pdev->brush.style != BS_NULL &&
- !(interior = CreateRoundRectRgn( rect.left, rect.top, rect.right + 1, rect.bottom + 1,
- ellipse_width, ellipse_height )))
- !(interior = NtGdiCreateRoundRectRgn( rect.left, rect.top, rect.right + 1, rect.bottom + 1,
- ellipse_width, ellipse_height )))
- {
- HeapFree( GetProcessHeap(), 0, points );
- if (outline) DeleteObject( outline );
@@ -59,8 +59,8 @@ index d269cc1..447aab5 100644
-
count = ellipse_first_quadrant( ellipse_width, ellipse_height, points );
if (dc->ArcDirection == AD_CLOCKWISE)
@@ -1635,13 +1635,37 @@ BOOL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
if (dc->attr->arc_direction == AD_CLOCKWISE)
@@ -1614,13 +1614,37 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
}
count = end + 1;
@@ -95,10 +95,10 @@ index d269cc1..447aab5 100644
if (interior)
{
- CombineRgn( interior, interior, outline, RGN_DIFF );
- NtGdiCombineRgn( interior, interior, outline, RGN_DIFF );
ret = brush_region( pdev, interior );
DeleteObject( interior );
}
--
1.9.1
2.30.2

View File

@@ -1,8 +1,8 @@
From d95656904e4d7d2c9a4006e90f123e28bbcdbb70 Mon Sep 17 00:00:00 2001
From 1adbc46410773bdd75d844280738be677bb75906 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Tue, 9 Mar 2021 16:53:09 -0500
Subject: [PATCH 01/39] winegstreamer: Activate source pad in push mode if it
isn't activated in pull mode.
Subject: [PATCH] winegstreamer: Activate source pad in push mode if it isn't
activated in pull mode.
Since our source pad is not part of any element, gstreamer won't end up activating it
directly through the state transition. Instead, if the downstream element doesn't
@@ -15,10 +15,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 0d59297a026..00ff02ef462 100644
index cd12a23d0c8..9b4c9c1c9ed 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -58,7 +58,7 @@ struct wg_parser
@@ -61,7 +61,7 @@ struct wg_parser
pthread_mutex_t mutex;
pthread_cond_t init_cond;
@@ -27,7 +27,7 @@ index 0d59297a026..00ff02ef462 100644
pthread_cond_t read_cond, read_done_cond;
struct
@@ -1365,9 +1365,12 @@ static gboolean src_activate_mode_cb(GstPad *pad, GstObject *parent, GstPadMode
@@ -1358,9 +1358,12 @@ static gboolean src_activate_mode_cb(GstPad *pad, GstObject *parent, GstPadMode
GST_DEBUG("%s source pad for parser %p in %s mode.",
activate ? "Activating" : "Deactivating", parser, gst_pad_mode_get_name(mode));
@@ -40,7 +40,7 @@ index 0d59297a026..00ff02ef462 100644
return TRUE;
case GST_PAD_MODE_PUSH:
return activate_push(pad, activate);
@@ -1612,6 +1615,8 @@ static void CDECL wg_parser_disconnect(struct wg_parser *parser)
@@ -1636,6 +1639,8 @@ static void CDECL wg_parser_disconnect(struct wg_parser *parser)
pthread_mutex_unlock(&parser->mutex);
gst_element_set_state(parser->container, GST_STATE_NULL);
@@ -49,7 +49,7 @@ index 0d59297a026..00ff02ef462 100644
gst_pad_unlink(parser->my_src, parser->their_sink);
gst_object_unref(parser->my_src);
gst_object_unref(parser->their_sink);
@@ -1667,6 +1672,8 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
@@ -1687,6 +1692,8 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
}
gst_element_set_state(parser->container, GST_STATE_PAUSED);
@@ -58,7 +58,7 @@ index 0d59297a026..00ff02ef462 100644
ret = gst_element_get_state(parser->container, NULL, NULL, -1);
if (ret == GST_STATE_CHANGE_FAILURE)
{
@@ -1718,6 +1725,8 @@ static BOOL avi_parser_init_gst(struct wg_parser *parser)
@@ -1734,6 +1741,8 @@ static BOOL avi_parser_init_gst(struct wg_parser *parser)
}
gst_element_set_state(parser->container, GST_STATE_PAUSED);
@@ -67,7 +67,7 @@ index 0d59297a026..00ff02ef462 100644
ret = gst_element_get_state(parser->container, NULL, NULL, -1);
if (ret == GST_STATE_CHANGE_FAILURE)
{
@@ -1772,6 +1781,8 @@ static BOOL mpeg_audio_parser_init_gst(struct wg_parser *parser)
@@ -1784,6 +1793,8 @@ static BOOL mpeg_audio_parser_init_gst(struct wg_parser *parser)
gst_pad_set_active(stream->my_sink, 1);
gst_element_set_state(parser->container, GST_STATE_PAUSED);
@@ -76,7 +76,7 @@ index 0d59297a026..00ff02ef462 100644
ret = gst_element_get_state(parser->container, NULL, NULL, -1);
if (ret == GST_STATE_CHANGE_FAILURE)
{
@@ -1826,6 +1837,8 @@ static BOOL wave_parser_init_gst(struct wg_parser *parser)
@@ -1825,6 +1836,8 @@ static BOOL wave_parser_init_gst(struct wg_parser *parser)
gst_pad_set_active(stream->my_sink, 1);
gst_element_set_state(parser->container, GST_STATE_PAUSED);

View File

@@ -1,8 +1,8 @@
From 9ec96ab12a41323abb477922cd2401446bd95457 Mon Sep 17 00:00:00 2001
From 2740496b0c1f878593899e6dc88390413bf835f1 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Wed, 10 Mar 2021 10:43:03 -0500
Subject: [PATCH 02/39] winegstreamer: Push stream-start and segment events in
push mode.
Subject: [PATCH] winegstreamer: Push stream-start and segment events in push
mode.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
@@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
1 file changed, 13 insertions(+)
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 00ff02ef462..c83afe4e195 100644
index 9b4c9c1c9ed..879aece63b7 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -1286,6 +1286,7 @@ static void *push_data(void *arg)
@@ -1279,6 +1279,7 @@ static void *push_data(void *arg)
{
struct wg_parser *parser = arg;
GstBuffer *buffer;
@@ -21,7 +21,7 @@ index 00ff02ef462..c83afe4e195 100644
guint max_size;
GST_DEBUG("Starting push thread.");
@@ -1298,6 +1299,12 @@ static void *push_data(void *arg)
@@ -1291,6 +1292,12 @@ static void *push_data(void *arg)
max_size = parser->stop_offset ? parser->stop_offset : parser->file_size;
@@ -34,7 +34,7 @@ index 00ff02ef462..c83afe4e195 100644
for (;;)
{
ULONG size;
@@ -1432,6 +1439,7 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
@@ -1425,6 +1432,7 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
GstEvent *flush_event;
GstSeekFlags flags;
gint64 cur, stop;
@@ -42,7 +42,7 @@ index 00ff02ef462..c83afe4e195 100644
guint32 seqnum;
gdouble rate;
@@ -1465,7 +1473,12 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
@@ -1458,7 +1466,12 @@ static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event)
gst_event_set_seqnum(flush_event, seqnum);
gst_pad_push_event(parser->my_src, flush_event);
if (thread)

View File

@@ -1,7 +1,7 @@
From 95db72178f4906d02785c707a46c8298f4c008d0 Mon Sep 17 00:00:00 2001
From 915e18d44c16f08f27ea4bf0e8bb46221b055ce0 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Wed, 10 Mar 2021 13:09:51 -0500
Subject: [PATCH 03/39] winegstreamer: Introduce H.264 decoder transform.
Subject: [PATCH] winegstreamer: Introduce H.264 decoder transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
@@ -345,7 +345,7 @@ index 55a62361966..cdf90d52025 100644
+
#endif /* __GST_PRIVATE_INCLUDED__ */
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
index dfa448afcfe..de679a62023 100644
index dcbd03137ba..4bff7ee9241 100644
--- a/dlls/winegstreamer/mfplat.c
+++ b/dlls/winegstreamer/mfplat.c
@@ -412,6 +412,7 @@ class_objects[] =
@@ -371,11 +371,11 @@ index 072ec90eea4..064a6872c79 100644
+]
+coclass CMSH264DecoderMFT { }
diff --git a/include/mfidl.idl b/include/mfidl.idl
index 76e0d0dfeb4..616271861aa 100644
index 5b16c08bb90..f28a0669804 100644
--- a/include/mfidl.idl
+++ b/include/mfidl.idl
@@ -1574,3 +1574,4 @@ cpp_quote("EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE, 0xba491365,
cpp_quote("EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS, 0xba491366, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);")
@@ -1579,3 +1579,4 @@ cpp_quote("EXTERN_GUID(MF_XVP_CALLER_ALLOCATES_OUTPUT, 0x4a2cabc, 0x0cab, 0x40b1
cpp_quote("EXTERN_GUID(MF_XVP_SAMPLE_LOCK_TIMEOUT, 0xaa4ddb29, 0x5134, 0x4363, 0xac, 0x72, 0x83, 0xec, 0x4b, 0xc1, 0x04, 0x26);")
cpp_quote("EXTERN_GUID(CLSID_VideoProcessorMFT, 0x88753b26, 0x5b24, 0x49bd, 0xb2, 0xe7, 0xc, 0x44, 0x5c, 0x78, 0xc9, 0x82);")
+cpp_quote("EXTERN_GUID(CLSID_CMSH264DecoderMFT, 0x62ce7e72, 0x4c71, 0x4d20, 0xb1, 0x5d, 0x45, 0x28, 0x31, 0xa8, 0x7d, 0x9d);")

View File

@@ -1,8 +1,8 @@
From 17dab7f1ec1e00c313fa9f9bdcd64847de83b785 Mon Sep 17 00:00:00 2001
From 42278cb728ff00fdd44e5ca04a68d3fd34c79f15 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Wed, 10 Mar 2021 14:14:21 -0500
Subject: [PATCH 04/39] winegstreamer: Implement ::GetInputAvailableType for
decode transform.
Subject: [PATCH] winegstreamer: Implement ::GetInputAvailableType for decode
transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
@@ -128,7 +128,7 @@ index cdf90d52025..2d2ebbda61f 100644
#endif /* __GST_PRIVATE_INCLUDED__ */
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
index de679a62023..40bb7969fc3 100644
index 4bff7ee9241..f8f83031b7e 100644
--- a/dlls/winegstreamer/mfplat.c
+++ b/dlls/winegstreamer/mfplat.c
@@ -402,6 +402,11 @@ static const GUID CLSID_GStreamerByteStreamHandler = {0x317df618, 0x5e5a, 0x468a

View File

@@ -1,8 +1,8 @@
From 5842d8b762b85ff36de01d672e81d3e6eab9c554 Mon Sep 17 00:00:00 2001
From 360b07b3ba1bc9fdb8225b64bc4a1ada43256087 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Wed, 10 Mar 2021 14:23:09 -0500
Subject: [PATCH 05/39] winegstreamer: Implement ::GetOutputAvailableType for
decode transform.
Subject: [PATCH] winegstreamer: Implement ::GetOutputAvailableType for decode
transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---

View File

@@ -1,8 +1,7 @@
From 6d41356d8849c741c93e6eaab81784a8be515aa5 Mon Sep 17 00:00:00 2001
From 328f8b7e095596cb11d86484665062591aebcf55 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Thu, 11 Mar 2021 12:33:02 -0500
Subject: [PATCH 06/39] winegstreamer: Implement ::SetInputType for decode
transform.
Subject: [PATCH] winegstreamer: Implement ::SetInputType for decode transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
@@ -151,7 +150,7 @@ index 2d2ebbda61f..215cf4577d4 100644
struct
{
diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c
index 40bb7969fc3..9a599358c61 100644
index f8f83031b7e..9d1cbd87746 100644
--- a/dlls/winegstreamer/mfplat.c
+++ b/dlls/winegstreamer/mfplat.c
@@ -533,6 +533,7 @@ video_formats[] =
@@ -162,7 +161,7 @@ index 40bb7969fc3..9a599358c61 100644
};
static const struct
@@ -718,10 +719,22 @@ static void mf_media_type_to_wg_format_video(IMFMediaType *type, struct wg_forma
@@ -719,10 +720,22 @@ static void mf_media_type_to_wg_format_video(IMFMediaType *type, struct wg_forma
if (IsEqualGUID(&subtype, video_formats[i].subtype))
{
format->u.video.format = video_formats[i].format;
@@ -188,7 +187,7 @@ index 40bb7969fc3..9a599358c61 100644
void mf_media_type_to_wg_format(IMFMediaType *type, struct wg_format *format)
diff --git a/dlls/winegstreamer/quartz_parser.c b/dlls/winegstreamer/quartz_parser.c
index 5f9535659b4..4eceeae0757 100644
index 09a916d7f5c..fc1b72cd958 100644
--- a/dlls/winegstreamer/quartz_parser.c
+++ b/dlls/winegstreamer/quartz_parser.c
@@ -268,6 +268,7 @@ static unsigned int get_image_size(const struct wg_format *format)
@@ -200,10 +199,10 @@ index 5f9535659b4..4eceeae0757 100644
}
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index c83afe4e195..e9689c01085 100644
index 879aece63b7..1afe92f04ac 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -384,6 +384,22 @@ static void wg_channel_mask_to_gst(GstAudioChannelPosition *positions, uint32_t
@@ -387,6 +387,22 @@ static void wg_channel_mask_to_gst(GstAudioChannelPosition *positions, uint32_t
}
}
@@ -226,7 +225,7 @@ index c83afe4e195..e9689c01085 100644
static GstCaps *wg_format_to_caps_audio(const struct wg_format *format)
{
GstAudioChannelPosition positions[32];
@@ -425,6 +441,65 @@ static GstCaps *wg_format_to_caps_video(const struct wg_format *format)
@@ -428,6 +444,65 @@ static GstCaps *wg_format_to_caps_video(const struct wg_format *format)
unsigned int i;
GstCaps *caps;
@@ -249,7 +248,7 @@ index c83afe4e195..e9689c01085 100644
+ case /* eAVEncH264VProfile_High */ 100: profile = "high"; break;
+ case /* eAVEncH264VProfile_444 */ 244: profile = "high-4:4:4"; break;
+ default:
+ ERR("Unrecognized H.264 profile attribute %u\n", format->u.video.compressed.h264.profile);
+ GST_ERROR("Unrecognized H.264 profile attribute %u\n", format->u.video.compressed.h264.profile);
+ /* fallthrough */
+ case 0: profile = NULL;
+ }
@@ -273,7 +272,7 @@ index c83afe4e195..e9689c01085 100644
+ case /* eAVEncH264VLevel5_1 */ 51: level = "5.1"; break;
+ case /* eAVEncH264VLevel5_2 */ 52: level = "5.2"; break;
+ default:
+ ERR("Unrecognized H.264 level attribute %u\n", format->u.video.compressed.h264.level);
+ GST_ERROR("Unrecognized H.264 level attribute %u\n", format->u.video.compressed.h264.level);
+ /* fallthrough */
+ case 0: level = NULL;
+ }
@@ -292,7 +291,7 @@ index c83afe4e195..e9689c01085 100644
if ((video_format = wg_video_format_to_gst(format->u.video.format)) == GST_VIDEO_FORMAT_UNKNOWN)
return NULL;
@@ -584,6 +659,7 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
@@ -587,6 +662,7 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
case WG_VIDEO_FORMAT_YVYU:
case WG_VIDEO_FORMAT_UNKNOWN:
case WG_VIDEO_FORMAT_CINEPAK:

View File

@@ -1,7 +1,7 @@
From 8a60a8ea1f93394afae504330ad623e4e85170d6 Mon Sep 17 00:00:00 2001
From b116bcc5c294697eb537255bb2ddffa1e7dad5c0 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Thu, 11 Mar 2021 12:58:32 -0500
Subject: [PATCH 07/39] winegstreamer: Implement ::SetOutputType for decode
Subject: [PATCH] winegstreamer: Implement ::SetOutputType for decode
transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>

View File

@@ -1,8 +1,8 @@
From 7bb5efd92e23dfb1f734119000ec4866392f8d7c Mon Sep 17 00:00:00 2001
From 359da83b2d725c927797bedc15095312453607ad Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Thu, 11 Mar 2021 14:40:32 -0500
Subject: [PATCH 08/39] winegstreamer: Implement ::Get(Input/Output)StreamInfo
for decode transform.
Subject: [PATCH] winegstreamer: Implement ::Get(Input/Output)StreamInfo for
decode transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---

View File

@@ -1,7 +1,7 @@
From 431374b54bf2c58515c9bd56acf45d15f2fdf42d Mon Sep 17 00:00:00 2001
From b8e243fcb8d17525a0688e8371bcfe490264baf1 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 19 Mar 2021 16:40:46 -0400
Subject: [PATCH 09/39] winegstreamer: Add push-mode path for wg_parser.
Subject: [PATCH] winegstreamer: Add push-mode path for wg_parser.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
@@ -86,7 +86,7 @@ index 215cf4577d4..25694aae84d 100644
extern const struct unix_funcs *unix_funcs;
diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c
index 9c554c7c415..f658cc0a5fc 100644
index 05544ef7abe..054e87edb7b 100644
--- a/dlls/winegstreamer/media_source.c
+++ b/dlls/winegstreamer/media_source.c
@@ -305,7 +305,7 @@ static void start_pipeline(struct media_source *source, struct source_async_comm
@@ -108,7 +108,7 @@ index 9c554c7c415..f658cc0a5fc 100644
TRACE("Media source is shutting down; exiting.\n");
diff --git a/dlls/winegstreamer/quartz_parser.c b/dlls/winegstreamer/quartz_parser.c
index 4eceeae0757..1c68eba1872 100644
index fc1b72cd958..4b0f2c215d1 100644
--- a/dlls/winegstreamer/quartz_parser.c
+++ b/dlls/winegstreamer/quartz_parser.c
@@ -799,7 +799,7 @@ static DWORD CALLBACK read_thread(void *arg)
@@ -130,10 +130,10 @@ index 4eceeae0757..1c68eba1872 100644
/* We do need to drop any buffers that might have been sent with the old
* caps, but this will be handled in parser_init_stream(). */
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index e9689c01085..9ca5abebfaf 100644
index 1afe92f04ac..d010b1e6eed 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -44,7 +44,7 @@ struct wg_parser
@@ -47,7 +47,7 @@ struct wg_parser
BOOL (*init_gst)(struct wg_parser *parser);
struct wg_parser_stream **streams;
@@ -142,7 +142,7 @@ index e9689c01085..9ca5abebfaf 100644
GstElement *container, *decodebin;
GstBus *bus;
@@ -58,7 +58,7 @@ struct wg_parser
@@ -61,7 +61,7 @@ struct wg_parser
pthread_mutex_t mutex;
pthread_cond_t init_cond;
@@ -151,7 +151,7 @@ index e9689c01085..9ca5abebfaf 100644
pthread_cond_t read_cond, read_done_cond;
struct
@@ -67,10 +67,12 @@ struct wg_parser
@@ -70,10 +70,12 @@ struct wg_parser
uint64_t offset;
uint32_t size;
bool done;
@@ -166,7 +166,7 @@ index e9689c01085..9ca5abebfaf 100644
};
struct wg_parser_stream
@@ -78,9 +80,10 @@ struct wg_parser_stream
@@ -81,9 +83,10 @@ struct wg_parser_stream
struct wg_parser *parser;
GstPad *their_src, *post_sink, *post_src, *my_sink;
@@ -178,7 +178,7 @@ index e9689c01085..9ca5abebfaf 100644
pthread_cond_t event_cond, event_empty_cond;
struct wg_parser_event event;
@@ -571,6 +574,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser)
@@ -574,6 +577,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser)
{
unsigned int i;
@@ -188,7 +188,7 @@ index e9689c01085..9ca5abebfaf 100644
pthread_mutex_lock(&parser->mutex);
parser->flushing = true;
pthread_mutex_unlock(&parser->mutex);
@@ -584,6 +590,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser)
@@ -587,6 +593,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser)
static void CDECL wg_parser_end_flush(struct wg_parser *parser)
{
@@ -198,7 +198,7 @@ index e9689c01085..9ca5abebfaf 100644
pthread_mutex_lock(&parser->mutex);
parser->flushing = false;
pthread_mutex_unlock(&parser->mutex);
@@ -594,7 +603,7 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser,
@@ -597,7 +606,7 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser,
{
pthread_mutex_lock(&parser->mutex);
@@ -207,7 +207,7 @@ index e9689c01085..9ca5abebfaf 100644
pthread_cond_wait(&parser->read_cond, &parser->mutex);
if (!parser->sink_connected)
@@ -611,14 +620,25 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser,
@@ -614,14 +623,25 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser,
return true;
}
@@ -237,7 +237,7 @@ index e9689c01085..9ca5abebfaf 100644
}
static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser)
@@ -630,11 +650,15 @@ static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser)
@@ -633,11 +653,15 @@ static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser)
static void CDECL wg_parser_stream_get_preferred_format(struct wg_parser_stream *stream, struct wg_format *format)
{
@@ -255,7 +255,7 @@ index e9689c01085..9ca5abebfaf 100644
stream->current_format = *format;
stream->enabled = true;
@@ -663,6 +687,18 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
@@ -666,6 +690,18 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const
gst_util_set_object_arg(G_OBJECT(stream->flip), "method", "none");
break;
}
@@ -274,7 +274,7 @@ index e9689c01085..9ca5abebfaf 100644
}
gst_pad_push_event(stream->my_sink, gst_event_new_reconfigure());
@@ -691,6 +727,11 @@ static bool CDECL wg_parser_stream_get_event(struct wg_parser_stream *stream, st
@@ -694,6 +730,11 @@ static bool CDECL wg_parser_stream_get_event(struct wg_parser_stream *stream, st
*event = stream->event;
@@ -286,7 +286,7 @@ index e9689c01085..9ca5abebfaf 100644
if (stream->event.type != WG_PARSER_EVENT_BUFFER)
{
stream->event.type = WG_PARSER_EVENT_NONE;
@@ -751,6 +792,9 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double
@@ -754,6 +795,9 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double
GstSeekType start_type = GST_SEEK_TYPE_SET, stop_type = GST_SEEK_TYPE_SET;
GstSeekFlags flags = 0;
@@ -296,7 +296,7 @@ index e9689c01085..9ca5abebfaf 100644
if (start_flags & AM_SEEKING_SeekToKeyFrame)
flags |= GST_SEEK_FLAG_KEY_UNIT;
if (start_flags & AM_SEEKING_Segment)
@@ -767,6 +811,43 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double
@@ -770,6 +814,43 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double
GST_FORMAT_TIME, flags, start_type, start_pos * 100, stop_type, stop_pos * 100));
}
@@ -340,7 +340,7 @@ index e9689c01085..9ca5abebfaf 100644
static void CDECL wg_parser_stream_notify_qos(struct wg_parser_stream *stream,
bool underflow, double proportion, int64_t diff, uint64_t timestamp)
{
@@ -1071,14 +1152,27 @@ static gboolean sink_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
@@ -1084,14 +1165,27 @@ static GstElement *create_element(const char *name, const char *plugin_set)
static struct wg_parser_stream *create_stream(struct wg_parser *parser)
{
struct wg_parser_stream *stream, **new_array;
@@ -373,7 +373,7 @@ index e9689c01085..9ca5abebfaf 100644
gst_segment_init(&stream->segment, GST_FORMAT_UNDEFINED);
@@ -1118,7 +1212,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
@@ -1131,7 +1225,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
if (!strcmp(name, "video/x-raw"))
{
@@ -382,9 +382,9 @@ index e9689c01085..9ca5abebfaf 100644
/* DirectShow can express interlaced video, but downstream filters can't
* necessarily consume it. In particular, the video renderer can't. */
@@ -1147,6 +1241,13 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
@@ -1148,11 +1242,30 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
if (!(flip = create_element("videoflip", "good")))
goto out;
}
+ if (!(videobox = gst_element_factory_make("videobox", NULL)))
+ {
@@ -395,10 +395,8 @@ index e9689c01085..9ca5abebfaf 100644
+
/* videoflip does not support 15 and 16-bit RGB so add a second videoconvert
* to do the final conversion. */
if (!(vconv2 = gst_element_factory_make("videoconvert", NULL)))
@@ -1156,6 +1257,18 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
if (!(vconv2 = create_element("videoconvert", "base")))
goto out;
}
+ if (!parser->seekable)
+ {
@@ -415,7 +413,7 @@ index e9689c01085..9ca5abebfaf 100644
/* The bin takes ownership of these elements. */
gst_bin_add(GST_BIN(parser->container), deinterlace);
gst_element_sync_state_with_parent(deinterlace);
@@ -1163,16 +1276,20 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
@@ -1160,16 +1273,20 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user)
gst_element_sync_state_with_parent(vconv);
gst_bin_add(GST_BIN(parser->container), flip);
gst_element_sync_state_with_parent(flip);
@@ -437,7 +435,7 @@ index e9689c01085..9ca5abebfaf 100644
}
else if (!strcmp(name, "audio/x-raw"))
{
@@ -1260,23 +1377,25 @@ static void pad_removed_cb(GstElement *element, GstPad *pad, gpointer user)
@@ -1253,23 +1370,25 @@ static void pad_removed_cb(GstElement *element, GstPad *pad, gpointer user)
g_free(name);
}
@@ -472,7 +470,7 @@ index e9689c01085..9ca5abebfaf 100644
if (!*buffer)
*buffer = new_buffer = gst_buffer_new_and_alloc(size);
@@ -1285,6 +1404,14 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent,
@@ -1278,6 +1397,14 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent,
pthread_mutex_lock(&parser->mutex);
@@ -487,7 +485,7 @@ index e9689c01085..9ca5abebfaf 100644
assert(!parser->read_request.data);
parser->read_request.data = map_info.data;
parser->read_request.offset = offset;
@@ -1296,8 +1423,36 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent,
@@ -1289,8 +1416,36 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent,
* the upstream pin to flush if necessary. We should never be blocked on
* read_thread() not running. */
@@ -525,7 +523,7 @@ index e9689c01085..9ca5abebfaf 100644
ret = parser->read_request.ret;
@@ -1305,12 +1460,29 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent,
@@ -1298,12 +1453,29 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent,
gst_buffer_unmap(*buffer, &map_info);
@@ -557,7 +555,7 @@ index e9689c01085..9ca5abebfaf 100644
}
static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
@@ -1329,7 +1501,7 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
@@ -1322,7 +1494,7 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
gst_query_set_duration(query, GST_FORMAT_PERCENT, GST_FORMAT_PERCENT_MAX);
return TRUE;
}
@@ -566,7 +564,7 @@ index e9689c01085..9ca5abebfaf 100644
{
gst_query_set_duration(query, GST_FORMAT_BYTES, parser->file_size);
return TRUE;
@@ -1343,15 +1515,42 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
@@ -1336,15 +1508,42 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
GST_WARNING("Cannot seek using format \"%s\".", gst_format_get_name(format));
return FALSE;
}
@@ -610,7 +608,7 @@ index e9689c01085..9ca5abebfaf 100644
default:
GST_WARNING("Unhandled query type %s.", GST_QUERY_TYPE_NAME(query));
return FALSE;
@@ -1361,42 +1560,115 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
@@ -1354,42 +1553,115 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query)
static void *push_data(void *arg)
{
struct wg_parser *parser = arg;
@@ -736,7 +734,7 @@ index e9689c01085..9ca5abebfaf 100644
buffer->duration = buffer->pts = -1;
if ((ret = gst_pad_push(parser->my_src, buffer)) < 0)
@@ -1406,8 +1678,6 @@ static void *push_data(void *arg)
@@ -1399,8 +1671,6 @@ static void *push_data(void *arg)
}
}
@@ -745,7 +743,7 @@ index e9689c01085..9ca5abebfaf 100644
gst_pad_push_event(parser->my_src, gst_event_new_eos());
GST_DEBUG("Stopping push thread.");
@@ -1423,6 +1693,12 @@ static gboolean activate_push(GstPad *pad, gboolean activate)
@@ -1416,6 +1686,12 @@ static gboolean activate_push(GstPad *pad, gboolean activate)
{
if (parser->push_thread)
{
@@ -758,8 +756,8 @@ index e9689c01085..9ca5abebfaf 100644
pthread_join(parser->push_thread, NULL);
parser->push_thread = 0;
}
@@ -1608,13 +1884,11 @@ static LONGLONG query_duration(GstPad *pad)
return 0;
@@ -1581,13 +1857,11 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event)
return ret;
}
-static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_size)
@@ -773,7 +771,7 @@ index e9689c01085..9ca5abebfaf 100644
parser->sink_connected = true;
if (!parser->bus)
@@ -1636,6 +1910,20 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
@@ -1609,6 +1883,20 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
parser->start_offset = parser->next_offset = parser->stop_offset = 0;
parser->next_pull_offset = 0;
@@ -794,7 +792,7 @@ index e9689c01085..9ca5abebfaf 100644
if (!parser->init_gst(parser))
return E_FAIL;
@@ -1666,6 +1954,43 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
@@ -1690,6 +1978,43 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s
return S_OK;
}
@@ -838,9 +836,9 @@ index e9689c01085..9ca5abebfaf 100644
static void free_stream(struct wg_parser_stream *stream)
{
if (stream->their_src)
@@ -1740,6 +2065,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
@@ -1760,6 +2085,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser)
if (!(element = create_element("decodebin", "base")))
return FALSE;
}
+ if (parser->input_format.major_type)
+ g_object_set(G_OBJECT(element), "sink-caps", wg_format_to_caps(&parser->input_format), NULL);
@@ -848,7 +846,7 @@ index e9689c01085..9ca5abebfaf 100644
gst_bin_add(GST_BIN(parser->container), element);
parser->decodebin = element;
@@ -2016,6 +2344,7 @@ static const struct unix_funcs funcs =
@@ -2015,6 +2343,7 @@ static const struct unix_funcs funcs =
wg_parser_destroy,
wg_parser_connect,
@@ -856,7 +854,7 @@ index e9689c01085..9ca5abebfaf 100644
wg_parser_disconnect,
wg_parser_begin_flush,
@@ -2040,6 +2369,7 @@ static const struct unix_funcs funcs =
@@ -2039,6 +2368,7 @@ static const struct unix_funcs funcs =
wg_parser_stream_get_duration,
wg_parser_stream_seek,

View File

@@ -1,8 +1,8 @@
From 316e739c324ef33e31987f0d5abd7b28db21e89a Mon Sep 17 00:00:00 2001
From 7585c2809396ce0a506749b5c2435ced429f3b32 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 19 Mar 2021 16:53:02 -0400
Subject: [PATCH 10/39] winegstreamer: Implement ::Process(Input/Output) for
decoder transform.
Subject: [PATCH] winegstreamer: Implement ::Process(Input/Output) for decoder
transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---

View File

@@ -1,7 +1,7 @@
From 6da483d3feca1cd83a5fecdd5671fa8a0d10a2f8 Mon Sep 17 00:00:00 2001
From 52a5aeb27602c0cccf12889dae5b9577d4af6cc8 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 19 Mar 2021 16:54:03 -0400
Subject: [PATCH 11/39] winestreamer: Implement ::ProcessMessage for decoder
Subject: [PATCH] winestreamer: Implement ::ProcessMessage for decoder
transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>

View File

@@ -1,7 +1,7 @@
From 5c7b05aeb941b1fbd4a978894873438aa0e5b397 Mon Sep 17 00:00:00 2001
From ea3b78cc1f9d9a8e52441878f3bb62bf5df845a1 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Fri, 19 Mar 2021 16:55:15 -0400
Subject: [PATCH 12/39] winegstreamer: Semi-stub ::GetAttributes for decoder
Subject: [PATCH] winegstreamer: Semi-stub ::GetAttributes for decoder
transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>

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