summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'kde-plasma/xdg-desktop-portal-kde/files/xdg-desktop-portal-kde-5.24.5-screencast-dont-provide-every-running-stream.patch')
-rw-r--r--kde-plasma/xdg-desktop-portal-kde/files/xdg-desktop-portal-kde-5.24.5-screencast-dont-provide-every-running-stream.patch358
1 files changed, 0 insertions, 358 deletions
diff --git a/kde-plasma/xdg-desktop-portal-kde/files/xdg-desktop-portal-kde-5.24.5-screencast-dont-provide-every-running-stream.patch b/kde-plasma/xdg-desktop-portal-kde/files/xdg-desktop-portal-kde-5.24.5-screencast-dont-provide-every-running-stream.patch
deleted file mode 100644
index 6aa94ccb7f69..000000000000
--- a/kde-plasma/xdg-desktop-portal-kde/files/xdg-desktop-portal-kde-5.24.5-screencast-dont-provide-every-running-stream.patch
+++ /dev/null
@@ -1,358 +0,0 @@
-From 3dbd366516c38d987025623feea18f79c15d72dd Mon Sep 17 00:00:00 2001
-From: Aleix Pol <aleixpol@kde.org>
-Date: Mon, 30 May 2022 15:42:02 +0200
-Subject: [PATCH] Backport of 5f7fe7482ae3de6e5dabbd2712c283439b0eecac
-
-Since the codebases had diverged over time, I've backported it by hand
-using the same concepts as the forementioned fix, trying to minimise the
-delta with the latest released Plasma 5.24.
----
- src/remotedesktop.cpp | 12 ++------
- src/screencast.cpp | 15 ++++++----
- src/waylandintegration.cpp | 60 +++++++++++++++-----------------------
- src/waylandintegration.h | 26 +++++++++++++++--
- src/waylandintegration_p.h | 15 ++--------
- 5 files changed, 61 insertions(+), 67 deletions(-)
-
-diff --git a/src/remotedesktop.cpp b/src/remotedesktop.cpp
-index f36def4..9282ff0 100644
---- a/src/remotedesktop.cpp
-+++ b/src/remotedesktop.cpp
-@@ -122,20 +122,14 @@ uint RemoteDesktopPortal::Start(const QDBusObjectPath &handle,
-
- if (remoteDesktopDialog->exec()) {
- if (session->screenSharingEnabled()) {
-- if (!WaylandIntegration::startStreamingOutput(remoteDesktopDialog->selectedScreens().first(), Screencasting::Hidden)) {
-+ auto stream = WaylandIntegration::startStreamingOutput(remoteDesktopDialog->selectedScreens().first(), Screencasting::Hidden);
-+ if (!stream.isValid()) {
- return 2;
- }
-
- WaylandIntegration::authenticate();
-
-- QVariant streams = WaylandIntegration::streams();
--
-- if (!streams.isValid()) {
-- qCWarning(XdgDesktopPortalKdeRemoteDesktop()) << "Pipewire stream is not ready to be streamed";
-- return 2;
-- }
--
-- results.insert(QStringLiteral("streams"), streams);
-+ results.insert(QStringLiteral("streams"), QVariant::fromValue<WaylandIntegration::Streams>({stream}));
- } else {
- qCWarning(XdgDesktopPortalKdeRemoteDesktop()) << "Only stream input";
- WaylandIntegration::startStreamingInput();
-diff --git a/src/screencast.cpp b/src/screencast.cpp
-index 210bbbb..5be6210 100644
---- a/src/screencast.cpp
-+++ b/src/screencast.cpp
-@@ -147,26 +147,29 @@ uint ScreenCastPortal::Start(const QDBusObjectPath &handle,
-
- if (screenDialog->exec()) {
- const auto selectedScreens = screenDialog->selectedScreens();
-+ WaylandIntegration::Streams streams;
- for (quint32 outputid : selectedScreens) {
-- if (!WaylandIntegration::startStreamingOutput(outputid, Screencasting::CursorMode(session->cursorMode()))) {
-+ auto stream = WaylandIntegration::startStreamingOutput(outputid, Screencasting::CursorMode(session->cursorMode()));
-+ if (!stream.isValid()) {
- return 2;
- }
-+ streams << stream;
- }
- const auto selectedWindows = screenDialog->selectedWindows();
- for (const auto &win : selectedWindows) {
-- if (!WaylandIntegration::startStreamingWindow(win)) {
-+ auto stream = WaylandIntegration::startStreamingWindow(win);
-+ if (!stream.isValid()) {
- return 2;
- }
-+ streams << stream;
- }
-
-- QVariant streams = WaylandIntegration::streams();
--
-- if (!streams.isValid()) {
-+ if (streams.isEmpty()) {
- qCWarning(XdgDesktopPortalKdeScreenCast) << "Pipewire stream is not ready to be streamed";
- return 2;
- }
-
-- results.insert(QStringLiteral("streams"), streams);
-+ results.insert(QStringLiteral("streams"), QVariant::fromValue(streams));
-
- if (inhibitionsEnabled()) {
- new NotificationInhibition(app_id, i18nc("Do not disturb mode is enabled because...", "Screen sharing in progress"), session);
-diff --git a/src/waylandintegration.cpp b/src/waylandintegration.cpp
-index 44d862a..9f5a177 100644
---- a/src/waylandintegration.cpp
-+++ b/src/waylandintegration.cpp
-@@ -43,7 +43,7 @@ Q_LOGGING_CATEGORY(XdgDesktopPortalKdeWaylandIntegration, "xdp-kde-wayland-integ
-
- Q_GLOBAL_STATIC(WaylandIntegration::WaylandIntegrationPrivate, globalWaylandIntegration)
-
--static QDebug operator<<(QDebug dbg, const WaylandIntegration::WaylandIntegrationPrivate::Stream &c)
-+static QDebug operator<<(QDebug dbg, const WaylandIntegration::Stream &c)
- {
- dbg.nospace() << "Stream(" << c.map << ", " << c.nodeId << ")";
- return dbg.space();
-@@ -74,12 +74,12 @@ void WaylandIntegration::startStreamingInput()
- globalWaylandIntegration->startStreamingInput();
- }
-
--bool WaylandIntegration::startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode)
-+WaylandIntegration::Stream WaylandIntegration::startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode)
- {
- return globalWaylandIntegration->startStreamingOutput(outputName, mode);
- }
-
--bool WaylandIntegration::startStreamingWindow(const QMap<int, QVariant> &win)
-+WaylandIntegration::Stream WaylandIntegration::startStreamingWindow(const QMap<int, QVariant> &win)
- {
- return globalWaylandIntegration->startStreamingWindow(win);
- }
-@@ -124,11 +124,6 @@ QMap<quint32, WaylandIntegration::WaylandOutput> WaylandIntegration::screens()
- return globalWaylandIntegration->screens();
- }
-
--QVariant WaylandIntegration::streams()
--{
-- return globalWaylandIntegration->streams();
--}
--
- // Thank you kscreen
- void WaylandIntegration::WaylandOutput::setOutputType(const QString &type)
- {
-@@ -157,7 +152,9 @@ void WaylandIntegration::WaylandOutput::setOutputType(const QString &type)
- }
- }
-
--const QDBusArgument &operator>>(const QDBusArgument &arg, WaylandIntegration::WaylandIntegrationPrivate::Stream &stream)
-+namespace WaylandIntegration
-+{
-+const QDBusArgument &operator>>(const QDBusArgument &arg, Stream &stream)
- {
- arg.beginStructure();
- arg >> stream.nodeId;
-@@ -177,7 +174,7 @@ const QDBusArgument &operator>>(const QDBusArgument &arg, WaylandIntegration::Wa
- return arg;
- }
-
--const QDBusArgument &operator<<(QDBusArgument &arg, const WaylandIntegration::WaylandIntegrationPrivate::Stream &stream)
-+const QDBusArgument &operator<<(QDBusArgument &arg, const Stream &stream)
- {
- arg.beginStructure();
- arg << stream.nodeId;
-@@ -186,9 +183,7 @@ const QDBusArgument &operator<<(QDBusArgument &arg, const WaylandIntegration::Wa
-
- return arg;
- }
--
--Q_DECLARE_METATYPE(WaylandIntegration::WaylandIntegrationPrivate::Stream)
--Q_DECLARE_METATYPE(WaylandIntegration::WaylandIntegrationPrivate::Streams)
-+}
-
- KWayland::Client::PlasmaWindowManagement *WaylandIntegration::plasmaWindowManagement()
- {
-@@ -207,8 +202,8 @@ WaylandIntegration::WaylandIntegrationPrivate::WaylandIntegrationPrivate()
- , m_fakeInput(nullptr)
- , m_screencasting(nullptr)
- {
-- qDBusRegisterMetaType<WaylandIntegrationPrivate::Stream>();
-- qDBusRegisterMetaType<WaylandIntegrationPrivate::Streams>();
-+ qDBusRegisterMetaType<Stream>();
-+ qDBusRegisterMetaType<Streams>();
- }
-
- WaylandIntegration::WaylandIntegrationPrivate::~WaylandIntegrationPrivate() = default;
-@@ -228,25 +223,25 @@ void WaylandIntegration::WaylandIntegrationPrivate::startStreamingInput()
- m_streamInput = true;
- }
-
--bool WaylandIntegration::WaylandIntegrationPrivate::startStreamingWindow(const QMap<int, QVariant> &win)
-+WaylandIntegration::Stream WaylandIntegration::WaylandIntegrationPrivate::startStreamingWindow(const QMap<int, QVariant> &win)
- {
- auto uuid = win[KWayland::Client::PlasmaWindowModel::Uuid].toString();
- return startStreaming(m_screencasting->createWindowStream(uuid, Screencasting::Hidden), {}, win);
- }
-
--bool WaylandIntegration::WaylandIntegrationPrivate::startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode)
-+WaylandIntegration::Stream WaylandIntegration::WaylandIntegrationPrivate::startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode)
- {
- auto output = m_outputMap.value(outputName).output();
-
- return startStreaming(m_screencasting->createOutputStream(output.data(), mode), output, {});
- }
-
--bool WaylandIntegration::WaylandIntegrationPrivate::startStreaming(ScreencastingStream *stream,
-- QSharedPointer<KWayland::Client::Output> output,
-- const QMap<int, QVariant> &win)
-+WaylandIntegration::Stream WaylandIntegration::WaylandIntegrationPrivate::startStreaming(ScreencastingStream *stream,
-+ QSharedPointer<KWayland::Client::Output> output,
-+ const QMap<int, QVariant> &win)
- {
- QEventLoop loop;
-- bool streamReady = false;
-+ Stream ret;
- connect(stream, &ScreencastingStream::failed, this, [&](const QString &error) {
- qCWarning(XdgDesktopPortalKdeWaylandIntegration) << "failed to start streaming" << stream << error;
-
-@@ -255,30 +250,26 @@ bool WaylandIntegration::WaylandIntegrationPrivate::startStreaming(Screencasting
- notification->setText(error);
- notification->setIconName(QStringLiteral("dialog-error"));
- notification->sendEvent();
--
-- streamReady = false;
- loop.quit();
- });
- connect(stream, &ScreencastingStream::created, this, [&](uint32_t nodeid) {
-- Stream s;
-- s.stream = stream;
-- s.nodeId = nodeid;
-+ ret.stream = stream;
-+ ret.nodeId = nodeid;
- if (output) {
- m_streamedScreenPosition = output->globalPosition();
-- s.map = {
-+ ret.map = {
- {QLatin1String("size"), output->pixelSize()},
- {QLatin1String("source_type"), static_cast<uint>(ScreenCastPortal::Monitor)},
- };
- } else {
-- s.map = {{QLatin1String("source_type"), static_cast<uint>(ScreenCastPortal::Window)}};
-+ ret.map = {{QLatin1String("source_type"), static_cast<uint>(ScreenCastPortal::Window)}};
- }
-- m_streams.append(s);
-+ m_streams.append(ret);
- startStreamingInput();
-
- connect(stream, &ScreencastingStream::closed, this, [this, nodeid] {
- stopStreaming(nodeid);
- });
-- streamReady = true;
-
- auto item = new KStatusNotifierItem(stream);
- item->setStandardActionsEnabled(false);
-@@ -303,10 +294,10 @@ bool WaylandIntegration::WaylandIntegrationPrivate::startStreaming(Screencasting
- QTimer::singleShot(3000, &loop, &QEventLoop::quit);
- loop.exec();
-
-- return streamReady;
-+ return ret;
- }
-
--void WaylandIntegration::WaylandIntegrationPrivate::Stream::close()
-+void WaylandIntegration::Stream::close()
- {
- stream->deleteLater();
- }
-@@ -390,11 +381,6 @@ QMap<quint32, WaylandIntegration::WaylandOutput> WaylandIntegration::WaylandInte
- return m_outputMap;
- }
-
--QVariant WaylandIntegration::WaylandIntegrationPrivate::streams()
--{
-- return QVariant::fromValue<WaylandIntegrationPrivate::Streams>(m_streams);
--}
--
- void WaylandIntegration::WaylandIntegrationPrivate::authenticate()
- {
- if (!m_waylandAuthenticationRequested) {
-diff --git a/src/waylandintegration.h b/src/waylandintegration.h
-index 04319c9..b8e6a00 100644
---- a/src/waylandintegration.h
-+++ b/src/waylandintegration.h
-@@ -9,6 +9,7 @@
- #ifndef XDG_DESKTOP_PORTAL_KDE_WAYLAND_INTEGRATION_H
- #define XDG_DESKTOP_PORTAL_KDE_WAYLAND_INTEGRATION_H
-
-+#include <QDBusArgument>
- #include <QObject>
- #include <QPoint>
- #include <QSize>
-@@ -28,6 +29,23 @@ class ScreencastingSource;
-
- namespace WaylandIntegration
- {
-+
-+struct Stream {
-+ ScreencastingStream *stream = nullptr;
-+ uint nodeId;
-+ QVariantMap map;
-+
-+ bool isValid() const
-+ {
-+ return stream != nullptr;
-+ }
-+
-+ void close();
-+};
-+typedef QVector<Stream> Streams;
-+const QDBusArgument &operator<<(QDBusArgument &arg, const Stream &stream);
-+const QDBusArgument &operator>>(const QDBusArgument &arg, Stream &stream);
-+
- class WaylandOutput
- {
- public:
-@@ -110,8 +128,8 @@ bool isStreamingEnabled();
- bool isStreamingAvailable();
-
- void startStreamingInput();
--bool startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode);
--bool startStreamingWindow(const QMap<int, QVariant> &win);
-+Stream startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode);
-+Stream startStreamingWindow(const QMap<int, QVariant> &win);
- void stopAllStreaming();
-
- void requestPointerButtonPress(quint32 linuxButton);
-@@ -123,7 +141,6 @@ void requestPointerAxisDiscrete(Qt::Orientation axis, qreal delta);
- void requestKeyboardKeycode(int keycode, bool state);
-
- QMap<quint32, WaylandOutput> screens();
--QVariant streams();
-
- void init();
-
-@@ -132,4 +149,7 @@ KWayland::Client::PlasmaWindowManagement *plasmaWindowManagement();
- WaylandIntegration *waylandIntegration();
- }
-
-+Q_DECLARE_METATYPE(WaylandIntegration::Stream)
-+Q_DECLARE_METATYPE(WaylandIntegration::Streams)
-+
- #endif // XDG_DESKTOP_PORTAL_KDE_WAYLAND_INTEGRATION_H
-diff --git a/src/waylandintegration_p.h b/src/waylandintegration_p.h
-index 220ad3d..e95f6a0 100644
---- a/src/waylandintegration_p.h
-+++ b/src/waylandintegration_p.h
-@@ -53,15 +53,6 @@ private:
- KWayland::Client::PlasmaWindowManagement *m_windowManagement = nullptr;
-
- public:
-- struct Stream {
-- ScreencastingStream *stream = nullptr;
-- uint nodeId;
-- QVariantMap map;
--
-- void close();
-- };
-- typedef QVector<Stream> Streams;
--
- void authenticate();
-
- bool isStreamingEnabled() const;
-@@ -69,9 +60,9 @@ public:
-
- void startStreamingInput();
-
-- bool startStreaming(ScreencastingStream *stream, QSharedPointer<KWayland::Client::Output> output, const QMap<int, QVariant> &win);
-- bool startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode);
-- bool startStreamingWindow(const QMap<int, QVariant> &win);
-+ Stream startStreaming(ScreencastingStream *stream, QSharedPointer<KWayland::Client::Output> output, const QMap<int, QVariant> &win);
-+ Stream startStreamingOutput(quint32 outputName, Screencasting::CursorMode mode);
-+ Stream startStreamingWindow(const QMap<int, QVariant> &win);
- void stopStreaming(uint32_t nodeid);
- void stopAllStreaming();
-
---
-GitLab
-