summaryrefslogtreecommitdiff
path: root/kde-plasma/kwayland-server/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-06-29 12:04:12 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-06-29 12:04:12 +0100
commit0f558761aa2dee1017b4751e4017205e015a9560 (patch)
tree037df795519468a25d9362b4e95cdaeb84eb1cf9 /kde-plasma/kwayland-server/files
parent752d6256e5204b958b0ef7905675a940b5e9172f (diff)
gentoo resync : 29.12.2022
Diffstat (limited to 'kde-plasma/kwayland-server/files')
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch109
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch57
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-race-in-wp_drm_lease_v1.patch73
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch44
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.5-fix-supported-action-init.patch44
5 files changed, 44 insertions, 283 deletions
diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch
deleted file mode 100644
index 4ddd9737e759..000000000000
--- a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From 40364d2ee670a5a74318ef96c643762293ca95f0 Mon Sep 17 00:00:00 2001
-From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
-Date: Fri, 8 Apr 2022 12:44:33 +0300
-Subject: [PATCH] Simplify code that announces available modes and current mode
-
-If no mode has the current flag set, the first mode object will be
-announced twice.
-
-There's also no benefit from sending the current mode as last. If the
-current mode changes, the compositor will send the current_mode event,
-not the mode event.
-
-BUG: 452318
-
-
-(cherry picked from commit b40c4e3f4108b9a0be9b4f5d437e72f7c2aa3fea)
----
- src/server/outputdevice_v2_interface.cpp | 35 ++++++++----------------
- 1 file changed, 11 insertions(+), 24 deletions(-)
-
-diff --git a/src/server/outputdevice_v2_interface.cpp b/src/server/outputdevice_v2_interface.cpp
-index 31ab16ca..9093bd2f 100644
---- a/src/server/outputdevice_v2_interface.cpp
-+++ b/src/server/outputdevice_v2_interface.cpp
-@@ -31,7 +31,7 @@ public:
-
- void sendGeometry(Resource *resource);
- wl_resource *sendNewMode(Resource *resource, OutputDeviceModeV2Interface *mode);
-- void sendCurrentMode(Resource *resource, OutputDeviceModeV2Interface *mode);
-+ void sendCurrentMode(Resource *resource);
- void sendDone(Resource *resource);
- void sendUuid(Resource *resource);
- void sendEdid(Resource *resource);
-@@ -180,7 +180,7 @@ void OutputDeviceV2Interface::setCurrentMode(OutputDeviceModeV2Interface *mode)
- const auto clientResources = d->resourceMap();
- for (auto it = clientResources.begin(); it != clientResources.end(); ++it) {
- auto resource = *it;
-- d->sendCurrentMode(resource, d->currentMode);
-+ d->sendCurrentMode(resource);
- d->sendDone(resource);
- }
- d->updateGeometry();
-@@ -257,22 +257,10 @@ void OutputDeviceV2InterfacePrivate::kde_output_device_v2_bind_resource(Resource
- sendName(resource);
- sendSerialNumber(resource);
-
-- auto currentModeIt = modes.end();
-- for (auto it = modes.begin(); it != modes.end(); ++it) {
-- auto &mode = *it;
-- if (mode->flags().testFlag(OutputDeviceModeV2Interface::ModeFlag::Current)) {
-- // needs to be sent as last mode
-- currentModeIt = it;
-- continue;
-- }
-+ for (OutputDeviceModeV2Interface *mode : std::as_const(modes)) {
- sendNewMode(resource, mode);
- }
--
-- if (currentModeIt != modes.end()) {
-- auto modeResource = sendNewMode(resource, *currentModeIt);
-- send_current_mode(resource->handle, modeResource);
-- }
--
-+ sendCurrentMode(resource);
- sendUuid(resource);
- sendEdid(resource);
- sendEnabled(resource);
-@@ -296,9 +284,9 @@ wl_resource *OutputDeviceV2InterfacePrivate::sendNewMode(Resource *resource, Out
- return modeResource->handle;
- }
-
--void OutputDeviceV2InterfacePrivate::sendCurrentMode(Resource *outputResource, OutputDeviceModeV2Interface *mode)
-+void OutputDeviceV2InterfacePrivate::sendCurrentMode(Resource *outputResource)
- {
-- const auto modeResource = OutputDeviceModeV2InterfacePrivate::get(mode)->findResource(outputResource);
-+ const auto modeResource = OutputDeviceModeV2InterfacePrivate::get(currentMode)->findResource(outputResource);
- send_current_mode(outputResource->handle, modeResource->handle);
- }
-
-@@ -506,12 +494,12 @@ void OutputDeviceV2Interface::setModes(const QList<OutputDeviceModeV2Interface *
- d->modes << outputDeviceMode;
- outputDeviceMode->setParent(this);
-
-+ for (auto resource : clientResources) {
-+ d->sendNewMode(resource, outputDeviceMode);
-+ }
-+
- if (outputDeviceMode->flags().testFlag(OutputDeviceModeV2Interface::ModeFlag::Current)) {
- d->currentMode = outputDeviceMode;
-- } else {
-- for (auto resource : clientResources) {
-- d->sendNewMode(resource, outputDeviceMode);
-- }
- }
- }
-
-@@ -520,8 +508,7 @@ void OutputDeviceV2Interface::setModes(const QList<OutputDeviceModeV2Interface *
- }
-
- for (auto resource : clientResources) {
-- d->sendNewMode(resource, d->currentMode);
-- d->sendCurrentMode(resource, d->currentMode);
-+ d->sendCurrentMode(resource);
- }
-
- qDeleteAll(oldModes.crbegin(), oldModes.crend());
---
-GitLab
-
diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch
deleted file mode 100644
index a3a0b2067f5d..000000000000
--- a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 97df88c6c8af925382bb1f59b7c6ad75f28142a0 Mon Sep 17 00:00:00 2001
-From: David Edmundson <kde@davidedmundson.co.uk>
-Date: Tue, 5 Apr 2022 13:26:26 +0100
-Subject: [PATCH] Fix layer shell reset
-
-In the current form any client committing multiple times without
-attaching a buffer would unset the cached state and trigger an error.
-
-It's legal (though weird) to commit multiple times before attaching a
-buffer.
-
-We should only reset the state if we commit an empty buffer after having
-committed an existing buffer. This brings us in line with XdgShell.
-
-
-(cherry picked from commit a5c55b68589a8771cde0bf4ce552702da6fca41c)
----
- src/server/layershell_v1_interface.cpp | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/server/layershell_v1_interface.cpp b/src/server/layershell_v1_interface.cpp
-index 17086334..19fcd68e 100644
---- a/src/server/layershell_v1_interface.cpp
-+++ b/src/server/layershell_v1_interface.cpp
-@@ -69,6 +69,7 @@ public:
- bool isClosed = false;
- bool isConfigured = false;
- bool isCommitted = false;
-+ bool firstBufferAttached = false;
-
- protected:
- void zwlr_layer_surface_v1_destroy_resource(Resource *resource) override;
-@@ -290,8 +291,10 @@ void LayerSurfaceV1InterfacePrivate::commit()
- return;
- }
-
-- if (!surface->isMapped() && isCommitted) {
-+ // detect reset
-+ if (!surface->isMapped() && firstBufferAttached) {
- isCommitted = false;
-+ firstBufferAttached = false;
- isConfigured = false;
-
- current = LayerSurfaceV1State();
-@@ -303,6 +306,9 @@ void LayerSurfaceV1InterfacePrivate::commit()
- const LayerSurfaceV1State previous = std::exchange(current, pending);
-
- isCommitted = true; // Must set the committed state before emitting any signals.
-+ if (surface->isMapped()) {
-+ firstBufferAttached = true;
-+ }
-
- if (previous.acceptsFocus != current.acceptsFocus) {
- Q_EMIT q->acceptsFocusChanged();
---
-GitLab
-
diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-race-in-wp_drm_lease_v1.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-race-in-wp_drm_lease_v1.patch
deleted file mode 100644
index 1799a711b472..000000000000
--- a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-race-in-wp_drm_lease_v1.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From dc09ce85f00b3a790e2817888067c3826280dd8e Mon Sep 17 00:00:00 2001
-From: Weng Xuetian <wengxt@gmail.com>
-Date: Sat, 16 Apr 2022 00:01:12 -0700
-Subject: [PATCH] Fix race in wp_drm_lease_v1.
-
-Basically this is a well known issue in wayland for globals. If bind
-comes after destroyed, it will raise a invalid global error. The common
-practice is to delay the destroy of global. Similar technique is also
-applied to wl_output.
-
-CCBUG: 452435
-(cherry picked from commit cdc9dcfb0a1f0445c46ee2cefa114329a2408555)
----
- src/server/drmleasedevice_v1_interface.cpp | 14 +++++---------
- src/server/drmleasedevice_v1_interface_p.h | 2 +-
- 2 files changed, 6 insertions(+), 10 deletions(-)
-
-diff --git a/src/server/drmleasedevice_v1_interface.cpp b/src/server/drmleasedevice_v1_interface.cpp
-index bffd22cd..7e338022 100644
---- a/src/server/drmleasedevice_v1_interface.cpp
-+++ b/src/server/drmleasedevice_v1_interface.cpp
-@@ -84,10 +84,6 @@ void DrmLeaseDeviceV1InterfacePrivate::remove()
- request->connectors.clear();
- }
- globalRemove();
-- removed = true;
-- if (resourceMap().isEmpty()) {
-- delete this;
-- }
- }
-
- void DrmLeaseDeviceV1InterfacePrivate::registerConnector(DrmLeaseConnectorV1Interface *connector)
-@@ -144,6 +140,9 @@ void DrmLeaseDeviceV1InterfacePrivate::wp_drm_lease_device_v1_release(Resource *
-
- void DrmLeaseDeviceV1InterfacePrivate::wp_drm_lease_device_v1_bind_resource(Resource *resource)
- {
-+ if (isGlobalRemoved()) {
-+ return;
-+ }
- if (!hasDrmMaster) {
- pendingFds << resource->handle;
- return;
-@@ -161,12 +160,9 @@ void DrmLeaseDeviceV1InterfacePrivate::wp_drm_lease_device_v1_bind_resource(Reso
- }
- }
-
--void DrmLeaseDeviceV1InterfacePrivate::wp_drm_lease_device_v1_destroy_resource(Resource *resource)
-+void DrmLeaseDeviceV1InterfacePrivate::wp_drm_lease_device_v1_destroy_global()
- {
-- Q_UNUSED(resource)
-- if (removed && resourceMap().isEmpty()) {
-- delete this;
-- }
-+ delete this;
- }
-
-
-diff --git a/src/server/drmleasedevice_v1_interface_p.h b/src/server/drmleasedevice_v1_interface_p.h
-index 4bef36e4..085aac85 100644
---- a/src/server/drmleasedevice_v1_interface_p.h
-+++ b/src/server/drmleasedevice_v1_interface_p.h
-@@ -44,7 +44,7 @@ protected:
- void wp_drm_lease_device_v1_create_lease_request(Resource *resource, uint32_t id) override;
- void wp_drm_lease_device_v1_release(Resource *resource) override;
- void wp_drm_lease_device_v1_bind_resource(Resource *resource) override;
-- void wp_drm_lease_device_v1_destroy_resource(Resource *resource) override;
-+ void wp_drm_lease_device_v1_destroy_global() override;
- };
-
- class DrmLeaseConnectorV1InterfacePrivate : public QObject, public QtWaylandServer::wp_drm_lease_connector_v1
---
-GitLab
-
diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch
deleted file mode 100644
index e40189ab2744..000000000000
--- a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 6dcf73adaafeaa40c05e22df5f1c10af88df362b Mon Sep 17 00:00:00 2001
-From: David Edmundson <kde@davidedmundson.co.uk>
-Date: Wed, 30 Mar 2022 14:57:12 +0100
-Subject: [PATCH] Guard subsurface parent access.
-
-Whilst a subsurface must have a parent at the time of creation, the
-lifespan is not guaranteed afterwards.
-
-It's a weird thing for a client to do, but we need to not crash
-afterwards.
-
-If the parent surface is destroyed we should consider the surface
-unmapped.
-
-BUG: 452044
-
-
-(cherry picked from commit 1d2424a56a13dc55aeab699a38234a7cafa091d8)
----
- src/server/surface_interface.cpp | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/server/surface_interface.cpp b/src/server/surface_interface.cpp
-index ef2584f4..8bfac95f 100644
---- a/src/server/surface_interface.cpp
-+++ b/src/server/surface_interface.cpp
-@@ -678,7 +678,13 @@ void SurfaceInterfacePrivate::commitFromCache()
-
- bool SurfaceInterfacePrivate::computeEffectiveMapped() const
- {
-- return bufferRef && (!subSurface || subSurface->parentSurface()->isMapped());
-+ if (!bufferRef) {
-+ return false;
-+ }
-+ if (subSurface) {
-+ return subSurface->parentSurface() && subSurface->parentSurface()->isMapped();
-+ }
-+ return true;
- }
-
- void SurfaceInterfacePrivate::updateEffectiveMapped()
---
-GitLab
-
diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.5-fix-supported-action-init.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.5-fix-supported-action-init.patch
new file mode 100644
index 000000000000..6e03d215ed43
--- /dev/null
+++ b/kde-plasma/kwayland-server/files/kwayland-server-5.24.5-fix-supported-action-init.patch
@@ -0,0 +1,44 @@
+From f669d7002b3966f53f8e17275123b24ec41e8e21 Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Mon, 16 May 2022 16:28:53 +0300
+Subject: [PATCH] wayland: Fix supported action initialization in data offer
+ interface
+
+Currently we guess the supported and preferred dnd actions in data offer
+for version >= 3. This can create problems because kwin may not send the
+right action events when the supported dnd actions actually change.
+---
+ src/server/dataoffer_interface.cpp | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/server/dataoffer_interface.cpp b/src/server/dataoffer_interface.cpp
+index ed682172..d78abeca 100644
+--- a/src/server/dataoffer_interface.cpp
++++ b/src/server/dataoffer_interface.cpp
+@@ -25,9 +25,8 @@ public:
+ DataOfferInterface *q;
+ QPointer<AbstractDataSource> source;
+
+- // defaults are set to sensible values for < version 3 interfaces
+- DataDeviceManagerInterface::DnDActions supportedDnDActions = DataDeviceManagerInterface::DnDAction::Copy | DataDeviceManagerInterface::DnDAction::Move;
+- DataDeviceManagerInterface::DnDAction preferredDnDAction = DataDeviceManagerInterface::DnDAction::Copy;
++ DataDeviceManagerInterface::DnDActions supportedDnDActions = DataDeviceManagerInterface::DnDAction::None;
++ DataDeviceManagerInterface::DnDAction preferredDnDAction = DataDeviceManagerInterface::DnDAction::None;
+
+ protected:
+ void data_offer_destroy_resource(Resource *resource) override;
+@@ -43,6 +42,11 @@ DataOfferInterfacePrivate::DataOfferInterfacePrivate(AbstractDataSource *_source
+ , q(_q)
+ , source(_source)
+ {
++ // defaults are set to sensible values for < version 3 interfaces
++ if (wl_resource_get_version(resource) < WL_DATA_OFFER_ACTION_SINCE_VERSION) {
++ supportedDnDActions = DataDeviceManagerInterface::DnDAction::Copy | DataDeviceManagerInterface::DnDAction::Move;
++ preferredDnDAction = DataDeviceManagerInterface::DnDAction::Copy;
++ }
+ }
+
+ void DataOfferInterfacePrivate::data_offer_accept(Resource *resource, uint32_t serial, const QString &mime_type)
+--
+GitLab
+