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
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
069adfd1b0 | ||
|
c91c63a5da | ||
|
f7c80250ec | ||
|
b059114710 | ||
|
f27610e7e7 | ||
|
9da0fe04d3 | ||
|
dc38777093 | ||
|
b57bf86ec0 | ||
|
4e99d1b2a8 | ||
|
8ad669e434 | ||
|
52dd338148 | ||
|
f841424edd | ||
|
5e8fbbf200 | ||
|
183fd3e089 | ||
|
092f3b1ed1 | ||
|
e59eb7639a | ||
|
a0716c9cfe | ||
|
fcf7b80107 |
@@ -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 );
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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)
|
||||
|
@@ -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);")
|
||||
|
@@ -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
|
||||
|
@@ -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>
|
||||
---
|
||||
|
@@ -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:
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
---
|
||||
|
@@ -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,
|
||||
|
@@ -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>
|
||||
---
|
||||
|
@@ -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>
|
||||
|
@@ -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
Reference in New Issue
Block a user