[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1109591: marked as done (unblock: kpipewire/6.3.6-1)



Your message dated Mon, 21 Jul 2025 22:12:27 +0000
with message-id <E1udykF-00APDr-2L@respighi.debian.org>
and subject line unblock kpipewire
has caused the Debian Bug report #1109591,
regarding unblock: kpipewire/6.3.6-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1109591: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1109591
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: kpipewire@packages.debian.org, Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Control: affects -1 + src:kpipewire
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear Release Team,

please unblock package kpipewire.

[ Reason ]
It contains the following changes:
* Fix incorrect backport of commit 0ac4aa41 that broke desktop
  sharing. (Closes: #1109233, thanks Antonio Russo for the detailed
  analysis !)
* New upstream release (6.3.6).
  - Fix build with Qt 6.10.
* Refresh patches.
* Backport upstream commit: [9fe7a568] Adjust timers from the correct
  thread

[ Tests ]
- Original reporter of #1109233 confirmed the fix works.
- No regression spotted running Plasma.

[ Risks ]
- the fix for #1109233 is a 3 liner.
- Other changes one change from the upstream release and one backported
  patch that can easily be backported or the changes reverted.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing


Thanks !


unblock kpipewire/6.3.6-1
diff -Nru kpipewire-6.3.5/CMakeLists.txt kpipewire-6.3.6/CMakeLists.txt
--- kpipewire-6.3.5/CMakeLists.txt	2025-05-06 19:56:52.000000000 +0200
+++ kpipewire-6.3.6/CMakeLists.txt	2025-07-08 13:44:18.000000000 +0200
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.16)
-project(KPipewire VERSION "6.3.5")
+project(KPipewire VERSION "6.3.90")
 
 set(KF6_MIN_VERSION "6.10.0")
 find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE)
@@ -13,6 +13,11 @@
 include(ECMDeprecationSettings)
 
 find_package(Qt6 REQUIRED COMPONENTS DBus Quick)
+
+if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
+    find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
+endif()
+
 find_package(KF6 REQUIRED COMPONENTS I18n CoreAddons)
 
 find_package(EGL REQUIRED)
diff -Nru kpipewire-6.3.5/debian/changelog kpipewire-6.3.6/debian/changelog
--- kpipewire-6.3.5/debian/changelog	2025-05-19 00:58:37.000000000 +0200
+++ kpipewire-6.3.6/debian/changelog	2025-07-15 16:45:40.000000000 +0200
@@ -1,3 +1,17 @@
+kpipewire (6.3.6-1) unstable; urgency=medium
+
+  [ Aurélien COUDERC ]
+  * Fix incorrect backport of commit 0ac4aa41 that broke desktop
+    sharing. (Closes: #1109233, thanks Antonio Russo for the detailed
+    analysis !)
+  * New upstream release (6.3.6).
+    - Fix build with Qt 6.10.
+  * Refresh patches.
+  * Backport upstream commit: [9fe7a568] Adjust timers from the correct
+    thread
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Tue, 15 Jul 2025 16:45:40 +0200
+
 kpipewire (6.3.5-1) unstable; urgency=medium
 
   [ Aurélien COUDERC ]
diff -Nru kpipewire-6.3.5/debian/patches/series kpipewire-6.3.6/debian/patches/series
--- kpipewire-6.3.5/debian/patches/series	2025-05-19 00:58:37.000000000 +0200
+++ kpipewire-6.3.6/debian/patches/series	2025-07-15 13:42:41.000000000 +0200
@@ -6,3 +6,4 @@
 upstream_123ae0d2_Tweak-encoding-options-for-VP9.patch
 upstream_0ac4aa41_encodedstream-Deprecate-setActive-and-replace-with-an-explicit-API.patch
 upstream_8793ae86_encodedstream-Don-t-query-VAAPI-in-the-constructor.patch
+upstream_9fe7a568_Adjust-timers-from-the-correct-thread.patch
diff -Nru kpipewire-6.3.5/debian/patches/upstream_0ac4aa41_encodedstream-Deprecate-setActive-and-replace-with-an-explicit-API.patch kpipewire-6.3.6/debian/patches/upstream_0ac4aa41_encodedstream-Deprecate-setActive-and-replace-with-an-explicit-API.patch
--- kpipewire-6.3.5/debian/patches/upstream_0ac4aa41_encodedstream-Deprecate-setActive-and-replace-with-an-explicit-API.patch	2025-05-19 00:58:37.000000000 +0200
+++ kpipewire-6.3.6/debian/patches/upstream_0ac4aa41_encodedstream-Deprecate-setActive-and-replace-with-an-explicit-API.patch	2025-07-15 13:22:09.000000000 +0200
@@ -26,8 +26,6 @@
  tests/HeadlessTest.cpp            |  20 ++++--
  6 files changed, 127 insertions(+), 49 deletions(-)
 
-diff --git a/src/pipewirebaseencodedstream.cpp b/src/pipewirebaseencodedstream.cpp
-index 67c5445..27ef198 100644
 --- a/src/pipewirebaseencodedstream.cpp
 +++ b/src/pipewirebaseencodedstream.cpp
 @@ -17,6 +17,8 @@ extern "C" {
@@ -62,7 +60,7 @@
  }
  
  PipeWireBaseEncodedStream::PipeWireBaseEncodedStream(QObject *parent)
-@@ -65,10 +62,10 @@ PipeWireBaseEncodedStream::PipeWireBaseEncodedStream(QObject *parent)
+@@ -65,10 +62,10 @@ PipeWireBaseEncodedStream::PipeWireBaseE
  
  PipeWireBaseEncodedStream::~PipeWireBaseEncodedStream()
  {
@@ -76,7 +74,7 @@
      }
  }
  
-@@ -78,7 +75,6 @@ void PipeWireBaseEncodedStream::setNodeId(uint nodeId)
+@@ -78,7 +75,6 @@ void PipeWireBaseEncodedStream::setNodeI
          return;
  
      d->m_nodeId = nodeId;
@@ -84,7 +82,7 @@
      Q_EMIT nodeIdChanged(nodeId);
  }
  
-@@ -91,7 +87,6 @@ void PipeWireBaseEncodedStream::setFd(uint fd)
+@@ -91,7 +87,6 @@ void PipeWireBaseEncodedStream::setFd(ui
          close(*d->m_fd);
      }
      d->m_fd = fd;
@@ -92,7 +90,7 @@
      Q_EMIT fdChanged(fd);
  }
  
-@@ -141,50 +136,84 @@ int PipeWireBaseEncodedStream::maxBufferSize() const
+@@ -141,50 +136,84 @@ int PipeWireBaseEncodedStream::maxBuffer
  
  void PipeWireBaseEncodedStream::setActive(bool active)
  {
@@ -206,11 +204,9 @@
  }
  
  void PipeWireBaseEncodedStream::setEncoder(Encoder encoder)
-diff --git a/src/pipewirebaseencodedstream.h b/src/pipewirebaseencodedstream.h
-index 9f4c0fd..8728252 100644
 --- a/src/pipewirebaseencodedstream.h
 +++ b/src/pipewirebaseencodedstream.h
-@@ -25,7 +25,7 @@ class KPIPEWIRE_EXPORT PipeWireBaseEncodedStream : public QObject
+@@ -25,7 +25,7 @@ class KPIPEWIRE_EXPORT PipeWireBaseEncod
       * Transfers the ownership of the fd, will close it when it's done with it.
       */
      Q_PROPERTY(uint fd READ fd WRITE setFd NOTIFY fdChanged)
@@ -270,19 +266,17 @@
 -    void refresh();
      QScopedPointer<PipeWireEncodedStreamPrivate> d;
  };
-diff --git a/src/pipewireproduce.cpp b/src/pipewireproduce.cpp
-index aa6acbb..e5b05cc 100644
 --- a/src/pipewireproduce.cpp
 +++ b/src/pipewireproduce.cpp
-@@ -201,6 +201,7 @@ void PipeWireProduce::setupStream()
-     if (!m_encoder || streamState != PW_STREAM_STATE_STREAMING) {
-         QMetaObject::invokeMethod(this, &PipeWireProduce::destroy, Qt::QueuedConnection);
-     }
+@@ -183,6 +183,7 @@ void PipeWireProduce::setupStream()
+         }
+     });
+     pthread_setname_np(m_outputThread.native_handle(), "PipeWireProduce::output");
 +    Q_EMIT started();
  }
  
- void PipeWireProduce::destroy()
-@@ -251,6 +252,7 @@ void PipeWireProduce::destroy()
+ void PipeWireProduce::deactivate()
+@@ -231,6 +232,7 @@ void PipeWireProduce::destroy()
  
      qCDebug(PIPEWIRERECORD_LOGGING) << "finished";
      cleanup();
@@ -290,11 +284,9 @@
      QThread::currentThread()->quit();
  }
  
-diff --git a/src/pipewireproduce_p.h b/src/pipewireproduce_p.h
-index 71ca34b..7cc49df 100644
 --- a/src/pipewireproduce_p.h
 +++ b/src/pipewireproduce_p.h
-@@ -154,6 +154,8 @@ public:
+@@ -151,6 +151,8 @@ public:
  
  Q_SIGNALS:
      void producedFrames();
@@ -303,11 +295,9 @@
  
  private:
      void initFiltersVaapi();
-diff --git a/src/pipewirerecord.cpp b/src/pipewirerecord.cpp
-index 7293b57..cff7ade 100644
 --- a/src/pipewirerecord.cpp
 +++ b/src/pipewirerecord.cpp
-@@ -69,7 +69,6 @@ void PipeWireRecord::setOutput(const QString &_output)
+@@ -69,7 +69,6 @@ void PipeWireRecord::setOutput(const QSt
          return;
  
      d->m_output = output;
@@ -315,11 +305,9 @@
      Q_EMIT outputChanged(output);
  }
  
-diff --git a/tests/HeadlessTest.cpp b/tests/HeadlessTest.cpp
-index 33db742..6d31f77 100644
 --- a/tests/HeadlessTest.cpp
 +++ b/tests/HeadlessTest.cpp
-@@ -55,16 +55,29 @@ void createStream(int nodeId, std::optional<int> fd = {})
+@@ -55,16 +55,29 @@ void createStream(int nodeId, std::optio
              }
              encoded->setEncoder(enc);
          }
@@ -352,7 +340,7 @@
          });
          return;
      }
-@@ -96,7 +109,6 @@ void createStream(int nodeId, std::optional<int> fd = {})
+@@ -96,7 +109,6 @@ void createStream(int nodeId, std::optio
      });
      QObject::connect(KSignalHandler::self(), &KSignalHandler::signalReceived, pwStream, [pwStream] {
          pwStream->setActive(false);
@@ -360,6 +348,3 @@
      });
  }
  
--- 
-GitLab
-
diff -Nru kpipewire-6.3.5/debian/patches/upstream_686df1e3_Tweak-compiler-warning-flags-to-reduce-unneeded-output.patch kpipewire-6.3.6/debian/patches/upstream_686df1e3_Tweak-compiler-warning-flags-to-reduce-unneeded-output.patch
--- kpipewire-6.3.5/debian/patches/upstream_686df1e3_Tweak-compiler-warning-flags-to-reduce-unneeded-output.patch	2025-05-19 00:58:37.000000000 +0200
+++ kpipewire-6.3.6/debian/patches/upstream_686df1e3_Tweak-compiler-warning-flags-to-reduce-unneeded-output.patch	2025-07-15 13:19:38.000000000 +0200
@@ -14,11 +14,9 @@
  src/libwebpencoder.cpp | 7 -------
  2 files changed, 1 insertion(+), 8 deletions(-)
 
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index bf53693..05c06f0 100644
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
-@@ -73,7 +73,7 @@ target_sources(KPipeWire PRIVATE
+@@ -66,7 +66,7 @@ target_sources(KPipeWire PRIVATE
  )
  
  # these are features pipewire use extensively and make it hard to look at compile logs
@@ -27,11 +25,9 @@
  
  target_link_libraries(KPipeWire PRIVATE Qt::Quick Qt::GuiPrivate KF6::I18n
      KF6::CoreAddons PkgConfig::PipeWire epoxy::epoxy PkgConfig::GBM Libdrm::Libdrm PkgConfig::LIBVA PkgConfig::LIBVA-drm)
-diff --git a/src/libwebpencoder.cpp b/src/libwebpencoder.cpp
-index 0006441..c62cecb 100644
 --- a/src/libwebpencoder.cpp
 +++ b/src/libwebpencoder.cpp
-@@ -51,9 +51,6 @@ bool LibWebPEncoder::initialize(const QSize &size)
+@@ -51,9 +51,6 @@ bool LibWebPEncoder::initialize(const QS
      m_avCodecContext->time_base = AVRational{1, 1000};
  
      AVDictionary *options = nullptr;
@@ -41,7 +37,7 @@
      if (int result = avcodec_open2(m_avCodecContext, codec, &options); result < 0) {
          qCWarning(PIPEWIRERECORD_LOGGING) << "Could not open codec" << av_err2str(result);
          return false;
-@@ -66,7 +63,3 @@ int LibWebPEncoder::percentageToAbsoluteQuality(const std::optional<quint8> &qua
+@@ -66,7 +63,3 @@ int LibWebPEncoder::percentageToAbsolute
  {
      return quality.value_or(-1); // Already 0-100. -1 resets to default.
  }
@@ -49,6 +45,3 @@
 -void LibWebPEncoder::applyEncodingPreference([[maybe_unused]] AVDictionary *options)
 -{
 -}
--- 
-GitLab
-
diff -Nru kpipewire-6.3.5/debian/patches/upstream_9fe7a568_Adjust-timers-from-the-correct-thread.patch kpipewire-6.3.6/debian/patches/upstream_9fe7a568_Adjust-timers-from-the-correct-thread.patch
--- kpipewire-6.3.5/debian/patches/upstream_9fe7a568_Adjust-timers-from-the-correct-thread.patch	1970-01-01 01:00:00.000000000 +0100
+++ kpipewire-6.3.6/debian/patches/upstream_9fe7a568_Adjust-timers-from-the-correct-thread.patch	2025-07-15 13:42:41.000000000 +0200
@@ -0,0 +1,38 @@
+From 9fe7a568d1e20bb2d402d49922ae41c0cce8dde7 Mon Sep 17 00:00:00 2001
+From: David Edmundson <kde@davidedmundson.co.uk>
+Date: Thu, 26 Jun 2025 14:50:27 +0100
+Subject: [PATCH] Adjust timers from the correct thread
+
+PipeWireBaseEncodedStream moves the PipeWireProduce into another thread. It is
+therefore it's responsiblity to ensure that any calls into PipeWireProduce are
+run in the correct thread.
+
+This addresses a warning about timers.
+---
+ src/pipewirebaseencodedstream.cpp | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/pipewirebaseencodedstream.cpp b/src/pipewirebaseencodedstream.cpp
+index de51a90..b17ee1b 100644
+--- a/src/pipewirebaseencodedstream.cpp
++++ b/src/pipewirebaseencodedstream.cpp
+@@ -103,9 +103,13 @@ void PipeWireBaseEncodedStream::setMaxFramerate(const Fraction &framerate)
+     }
+     d->m_maxFramerate = framerate;
+ 
+-    if (d->m_produce) {
+-        d->m_produce->setMaxFramerate(d->m_maxFramerate);
+-    }
++    // produce runs in another thread
++    QMetaObject::invokeMethod(
++        d->m_produce.get(),
++        [produce = d->m_produce.get(), framerate]() {
++            produce->setMaxFramerate(framerate);
++        },
++        Qt::QueuedConnection);
+ 
+     Q_EMIT maxFramerateChanged();
+ }
+-- 
+GitLab
+
diff -Nru kpipewire-6.3.5/src/CMakeLists.txt kpipewire-6.3.6/src/CMakeLists.txt
--- kpipewire-6.3.5/src/CMakeLists.txt	2025-05-06 19:56:52.000000000 +0200
+++ kpipewire-6.3.6/src/CMakeLists.txt	2025-07-08 13:44:18.000000000 +0200
@@ -144,7 +144,7 @@
 target_link_libraries(KPipeWireRecord PUBLIC KPipeWire
     PRIVATE Qt::Core Qt::Gui KF6::CoreAddons KPipeWireDmaBuf
     PkgConfig::AVCodec PkgConfig::AVUtil PkgConfig::AVFormat PkgConfig::AVFilter PkgConfig::GBM PkgConfig::SWScale
-    epoxy::epoxy Libdrm::Libdrm Qt::GuiPrivate
+    epoxy::epoxy Libdrm::Libdrm
 )
 
 ecm_generate_headers(KPipeWireRecord_HEADERS
diff -Nru kpipewire-6.3.5/src/pipewirerecord.cpp kpipewire-6.3.6/src/pipewirerecord.cpp
--- kpipewire-6.3.5/src/pipewirerecord.cpp	2025-05-06 19:56:52.000000000 +0200
+++ kpipewire-6.3.6/src/pipewirerecord.cpp	2025-07-08 13:44:18.000000000 +0200
@@ -13,7 +13,6 @@
 #include <QGuiApplication>
 #include <QImage>
 #include <QPainter>
-#include <qpa/qplatformnativeinterface.h>
 
 #include <KShell>
 
diff -Nru kpipewire-6.3.5/tests/CMakeLists.txt kpipewire-6.3.6/tests/CMakeLists.txt
--- kpipewire-6.3.5/tests/CMakeLists.txt	2025-05-06 19:56:52.000000000 +0200
+++ kpipewire-6.3.6/tests/CMakeLists.txt	2025-07-08 13:44:18.000000000 +0200
@@ -40,7 +40,7 @@
 )
 
 add_executable(xdp-recordme xdp-main.cpp recordme.qrc ${XDP_SRCS} RecordMe.cpp)
-target_link_libraries(xdp-recordme Qt::DBus Qt::Quick KPipeWire Qt::GuiPrivate Wayland::Client Qt::WaylandClient )
+target_link_libraries(xdp-recordme Qt::DBus Qt::Quick KPipeWire Wayland::Client Qt::WaylandClient )
 
 option(INSTALL_TESTS "The recordme test needs installing, disabled by default for convenience" OFF)
 if(INSTALL_TESTS)

--- End Message ---
--- Begin Message ---
Unblocked kpipewire.

--- End Message ---

Reply to: