aboutsummaryrefslogtreecommitdiffstats
path: root/community/kwin/0001-Implement-Primary-Displays-on-the-Wayland-session.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/kwin/0001-Implement-Primary-Displays-on-the-Wayland-session.patch')
-rw-r--r--community/kwin/0001-Implement-Primary-Displays-on-the-Wayland-session.patch201
1 files changed, 0 insertions, 201 deletions
diff --git a/community/kwin/0001-Implement-Primary-Displays-on-the-Wayland-session.patch b/community/kwin/0001-Implement-Primary-Displays-on-the-Wayland-session.patch
deleted file mode 100644
index 620217c30cd..00000000000
--- a/community/kwin/0001-Implement-Primary-Displays-on-the-Wayland-session.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-From c1e9cc283d53569153eb59064e033a10d2c3546c Mon Sep 17 00:00:00 2001
-From: Aleix Pol <aleixpol@kde.org>
-Date: Mon, 25 Oct 2021 02:05:23 +0200
-Subject: [PATCH] Implement Primary Displays on the wayland session
-
-Adopts the kde_outputmanagement_v2 hooks for it
----
- src/plugins/platforms/drm/drm_backend.cpp | 5 +++++
- src/platform.cpp | 25 +++++++++++++++++++++++++
- src/platform.h | 15 +++++++++++++++
- src/wayland_server.cpp | 9 +++++++++
- src/wayland_server.h | 2 ++
- src/waylandoutputdevicev2.cpp | 1 +
- 6 files changed, 57 insertions(+)
-
-diff --git a/src/plugins/platforms/drm/drm_backend.cpp b/src/backends/drm/drm_backend.cpp
-index 692da40f92..316af63d73 100644
---- a/src/plugins/platforms/drm/drm_backend.cpp
-+++ b/src/plugins/platforms/drm/drm_backend.cpp
-@@ -450,12 +450,16 @@ void DrmBackend::readOutputsConfiguration()
- }
- const auto outputsInfo = KWinKScreenIntegration::outputsConfig(m_outputs);
-
-+ AbstractOutput *primaryOutput = m_outputs.constFirst();
- // default position goes from left to right
- QPoint pos(0, 0);
- for (auto it = m_outputs.begin(); it != m_outputs.end(); ++it) {
- const QJsonObject outputInfo = outputsInfo[*it];
- qCDebug(KWIN_DRM) << "Reading output configuration for " << *it;
- if (!outputInfo.isEmpty()) {
-+ if (outputInfo["primary"].toBool()) {
-+ primaryOutput = *it;
-+ }
- const QJsonObject pos = outputInfo["pos"].toObject();
- (*it)->moveTo({pos["x"].toInt(), pos["y"].toInt()});
- if (const QJsonValue scale = outputInfo["scale"]; !scale.isUndefined()) {
-@@ -473,6 +477,7 @@ void DrmBackend::readOutputsConfiguration()
- }
- pos.setX(pos.x() + (*it)->geometry().width());
- }
-+ setPrimaryOutput(primaryOutput);
- }
-
- void DrmBackend::enableOutput(DrmAbstractOutput *output, bool enable)
-diff --git a/src/platform.cpp b/src/platform.cpp
-index 9f43fe3186..8dc8790a49 100644
---- a/src/platform.cpp
-+++ b/src/platform.cpp
-@@ -40,6 +40,17 @@ Platform::Platform(QObject *parent)
- {
- setSoftwareCursorForced(false);
- connect(Cursors::self(), &Cursors::currentCursorRendered, this, &Platform::cursorRendered);
-+
-+ connect(this, &Platform::outputDisabled, this, [this] (AbstractOutput *output) {
-+ if (m_primaryOutput == output) {
-+ setPrimaryOutput(enabledOutputs().value(0, nullptr));
-+ }
-+ });
-+ connect(this, &Platform::outputEnabled, this, [this] (AbstractOutput *output) {
-+ if (!m_primaryOutput) {
-+ setPrimaryOutput(output);
-+ }
-+ });
- }
-
- Platform::~Platform()
-@@ -152,6 +163,10 @@ void Platform::requestOutputsChange(KWaylandServer::OutputConfigurationV2Interfa
- }
- }
-
-+ if (config->primaryChanged()) {
-+ setPrimaryOutput(findOutput(config->primary()->uuid()));
-+ }
-+
- Q_EMIT screens()->changed();
- config->setApplied();
- }
-@@ -637,4 +652,14 @@ void Platform::setSceneEglGlobalShareContext(EGLContext context)
- m_globalShareContext = context;
- }
-
-+void Platform::setPrimaryOutput(AbstractOutput *primary)
-+{
-+ if (primary == m_primaryOutput) {
-+ return;
-+ }
-+ Q_ASSERT(kwinApp()->isTerminating() || primary->isEnabled());
-+ m_primaryOutput = primary;
-+ Q_EMIT primaryOutputChanged(primary);
-+}
-+
- }
-diff --git a/src/platform.h b/src/platform.h
-index b2e0c51a03..e2f26984d0 100644
---- a/src/platform.h
-+++ b/src/platform.h
-@@ -398,6 +398,18 @@ public:
- virtual AbstractOutput *createVirtualOutput(const QString &name, const QSize &size, qreal scaling);
- virtual void removeVirtualOutput(AbstractOutput *output);
-
-+ /**
-+ * @returns the primary output amomg the enabled outputs
-+ */
-+ AbstractOutput *primaryOutput() const {
-+ return m_primaryOutput;
-+ }
-+
-+ /**
-+ * Assigns a the @p primary output among the enabled outputs
-+ */
-+ void setPrimaryOutput(AbstractOutput *primary);
-+
- public Q_SLOTS:
- void pointerMotion(const QPointF &position, quint32 time);
- void pointerButtonPressed(quint32 button, quint32 time);
-@@ -455,6 +467,8 @@ Q_SIGNALS:
- */
- void outputDisabled(AbstractOutput *output);
-
-+ void primaryOutputChanged(AbstractOutput *primaryOutput);
-+
- protected:
- explicit Platform(QObject *parent = nullptr);
- void setSoftwareCursor(bool set);
-@@ -527,6 +541,7 @@ private:
- bool m_supportsOutputChanges = false;
- bool m_isPerScreenRenderingEnabled = false;
- CompositingType m_selectedCompositor = NoCompositing;
-+ AbstractOutput *m_primaryOutput = nullptr;
- };
-
- }
-diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp
-index d20bf88165..be782e4b22 100644
---- a/src/wayland_server.cpp
-+++ b/src/wayland_server.cpp
-@@ -51,6 +51,7 @@
- #include <KWaylandServer/blur_interface.h>
- #include <KWaylandServer/outputmanagement_v2_interface.h>
- #include <KWaylandServer/outputconfiguration_v2_interface.h>
-+#include <KWaylandServer/primaryoutput_v1_interface.h>
- #include <KWaylandServer/xdgactivation_v1_interface.h>
- #include <KWaylandServer/xdgdecoration_v1_interface.h>
- #include <KWaylandServer/xdgshell_interface.h>
-@@ -274,6 +275,13 @@ void WaylandServer::initPlatform()
- connect(kwinApp()->platform(), &Platform::outputEnabled, this, &WaylandServer::handleOutputEnabled);
- connect(kwinApp()->platform(), &Platform::outputDisabled, this, &WaylandServer::handleOutputDisabled);
-
-+ connect(kwinApp()->platform(), &Platform::primaryOutputChanged, this, [this] (AbstractOutput *primaryOutput) {
-+ m_primary->setPrimaryOutput(primaryOutput->name());
-+ });
-+ if (auto primaryOutput = kwinApp()->platform()->primaryOutput()) {
-+ m_primary->setPrimaryOutput(primaryOutput->name());
-+ }
-+
- const QVector<AbstractOutput *> outputs = kwinApp()->platform()->outputs();
- for (AbstractOutput *output : outputs) {
- handleOutputAdded(output);
-@@ -493,6 +501,7 @@ bool WaylandServer::init(InitializationFlags flags)
- this, [](KWaylandServer::OutputConfigurationV2Interface *config) {
- kwinApp()->platform()->requestOutputsChange(config);
- });
-+ m_primary = new PrimaryOutputV1Interface(m_display, m_display);
-
- m_xdgOutputManagerV1 = new XdgOutputManagerV1Interface(m_display, m_display);
- new SubCompositorInterface(m_display, m_display);
-diff --git a/src/wayland_server.h b/src/wayland_server.h
-index a86ab4ca9d..e1bbcab17b 100644
---- a/src/wayland_server.h
-+++ b/src/wayland_server.h
-@@ -38,6 +38,7 @@ class PlasmaShellInterface;
- class PlasmaWindowActivationFeedbackInterface;
- class PlasmaVirtualDesktopManagementInterface;
- class PlasmaWindowManagementInterface;
-+class PrimaryOutputV1Interface;
- class OutputManagementV2Interface;
- class XdgForeignV2Interface;
- class XdgOutputManagerV1Interface;
-@@ -269,6 +270,7 @@ private:
- KWaylandServer::ClientConnection *m_screenLockerClientConnection = nullptr;
- KWaylandServer::XdgForeignV2Interface *m_XdgForeign = nullptr;
- KWaylandServer::KeyStateInterface *m_keyState = nullptr;
-+ KWaylandServer::PrimaryOutputV1Interface *m_primary = nullptr;
- QList<AbstractClient *> m_clients;
- InitializationFlags m_initFlags;
- QHash<AbstractWaylandOutput *, WaylandOutput *> m_waylandOutputs;
-diff --git a/src/waylandoutputdevicev2.cpp b/src/waylandoutputdevicev2.cpp
-index 723fc2e268..a60c8f26a6 100644
---- a/src/waylandoutputdevicev2.cpp
-+++ b/src/waylandoutputdevicev2.cpp
-@@ -68,6 +68,7 @@ WaylandOutputDevice::WaylandOutputDevice(AbstractWaylandOutput *output, QObject
- m_outputDeviceV2->setCapabilities(kwinCapabilitiesToOutputDeviceCapabilities(output->capabilities()));
- m_outputDeviceV2->setVrrPolicy(kwinVrrPolicyToOutputDeviceVrrPolicy(output->vrrPolicy()));
- m_outputDeviceV2->setRgbRange(kwinRgbRangeToOutputDeviceRgbRange(output->rgbRange()));
-+ m_outputDeviceV2->setName(output->name());
-
- updateModes(output);
-
---
-GitLab
-