From 0f558761aa2dee1017b4751e4017205e015a9560 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 29 Jun 2022 12:04:12 +0100 Subject: gentoo resync : 29.12.2022 --- ...r-5.24.4-fix-crash-on-screen-setup-change.patch | 109 --------------------- ...yland-server-5.24.4-fix-layer-shell-reset.patch | 57 ----------- ...server-5.24.4-fix-race-in-wp_drm_lease_v1.patch | 73 -------------- ...ver-5.24.4-guard-subsurface-parent-access.patch | 44 --------- ...d-server-5.24.5-fix-supported-action-init.patch | 44 +++++++++ 5 files changed, 44 insertions(+), 283 deletions(-) delete mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch delete mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch delete mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-race-in-wp_drm_lease_v1.patch delete mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch create mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.5-fix-supported-action-init.patch (limited to 'kde-plasma/kwayland-server/files') 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 -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 QListmodes << 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 QListsendNewMode(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 -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 -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 -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 +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 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 + -- cgit v1.2.3