summaryrefslogtreecommitdiffstats
path: root/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch')
-rw-r--r--source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch b/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
new file mode 100644
index 000000000..4c30b8dec
--- /dev/null
+++ b/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
@@ -0,0 +1,38 @@
+From 926f864756e5586f38574c166abdb5befa3dc771 Mon Sep 17 00:00:00 2001
+From: David Edmundson <kde@davidedmundson.co.uk>
+Date: Wed, 8 Dec 2021 13:08:43 +0000
+Subject: [PATCH] [libtaskmanager] Increase buffer for pipewire format
+ negotiation
+
+Libtaskmanager's buffer for spa_builder is too small on certain
+configurations. Because podBuilder->state.offset is never reset, the
+buffer space can run out when EGL returns a long list of dma_buf
+modifiers, causing PipeWire negotiation to fail.
+
+An example is when EGL returns 20 modifiers. There are 6 formats defined
+in pipewiresourcestream.cpp, for each format it will construct 2 frames,
+one with 21*8=168 bytes long of modifiers. The modifier lists for all
+frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let
+alone other frames.
+
+BUG: 446061
+---
+ libtaskmanager/declarative/pipewiresourcestream.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libtaskmanager/declarative/pipewiresourcestream.cpp b/libtaskmanager/declarative/pipewiresourcestream.cpp
+index a6713ae76..f1d3032a5 100644
+--- a/libtaskmanager/declarative/pipewiresourcestream.cpp
++++ b/libtaskmanager/declarative/pipewiresourcestream.cpp
+@@ -260,7 +260,7 @@ bool PipeWireSourceStream::createStream(uint nodeid)
+ pwNodeId = nodeid;
+ pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this);
+
+- uint8_t buffer[1024];
++ uint8_t buffer[4096];
+ spa_pod_builder podBuilder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
+
+ const QVector<spa_video_format> formats =
+--
+GitLab
+