Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kwayland-server for openSUSE:Factory checked in at 2022-05-05 23:04:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwayland-server (Old) and /work/SRC/openSUSE:Factory/.kwayland-server.new.1538 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwayland-server" Thu May 5 23:04:55 2022 rev:36 rq:974700 version:5.24.5 Changes: -------- --- /work/SRC/openSUSE:Factory/kwayland-server/kwayland-server.changes 2022-04-01 21:35:29.477901555 +0200 +++ /work/SRC/openSUSE:Factory/.kwayland-server.new.1538/kwayland-server.changes 2022-05-05 23:05:08.361463377 +0200 @@ -1,0 +2,14 @@ +Tue May 3 13:00:21 UTC 2022 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to 5.24.5 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/plasma/5/5.24.5 +- Changes since 5.24.4: + * outputconfigurationinterface: don't crash if mode is invalid (kde#453042) + * Fix race in wp_drm_lease_v1. + * Simplify code that announces available modes and current mode (kde#452318) + * Guard subsurface parent access. (kde#452044) + * Fix layer shell reset + +------------------------------------------------------------------- Old: ---- kwayland-server-5.24.4.tar.xz kwayland-server-5.24.4.tar.xz.sig New: ---- kwayland-server-5.24.5.tar.xz kwayland-server-5.24.5.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwayland-server.spec ++++++ --- /var/tmp/diff_new_pack.zN6CM0/_old 2022-05-05 23:05:08.913464066 +0200 +++ /var/tmp/diff_new_pack.zN6CM0/_new 2022-05-05 23:05:08.921464076 +0200 @@ -24,7 +24,7 @@ %bcond_without released Name: kwayland-server -Version: 5.24.4 +Version: 5.24.5 Release: 0 Summary: KDE Wayland server library License: LGPL-2.1-or-later ++++++ kwayland-server-5.24.4.tar.xz -> kwayland-server-5.24.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/CMakeLists.txt new/kwayland-server-5.24.5/CMakeLists.txt --- old/kwayland-server-5.24.4/CMakeLists.txt 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/CMakeLists.txt 2022-05-03 12:11:15.000000000 +0200 @@ -2,7 +2,7 @@ set(CMAKE_C_STANDARD 99) -set(PROJECT_VERSION "5.24.4") +set(PROJECT_VERSION "5.24.5") set(PROJECT_VERSION_MAJOR 5) set(QT_MIN_VERSION "5.15.0") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/src/server/drmleasedevice_v1_interface.cpp new/kwayland-server-5.24.5/src/server/drmleasedevice_v1_interface.cpp --- old/kwayland-server-5.24.4/src/server/drmleasedevice_v1_interface.cpp 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/src/server/drmleasedevice_v1_interface.cpp 2022-05-03 12:11:15.000000000 +0200 @@ -84,10 +84,6 @@ 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_bind_resource(Resource *resource) { + if (isGlobalRemoved()) { + return; + } if (!hasDrmMaster) { pendingFds << resource->handle; return; @@ -161,12 +160,9 @@ } } -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/src/server/drmleasedevice_v1_interface_p.h new/kwayland-server-5.24.5/src/server/drmleasedevice_v1_interface_p.h --- old/kwayland-server-5.24.4/src/server/drmleasedevice_v1_interface_p.h 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/src/server/drmleasedevice_v1_interface_p.h 2022-05-03 12:11:15.000000000 +0200 @@ -44,7 +44,7 @@ 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 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/src/server/layershell_v1_interface.cpp new/kwayland-server-5.24.5/src/server/layershell_v1_interface.cpp --- old/kwayland-server-5.24.4/src/server/layershell_v1_interface.cpp 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/src/server/layershell_v1_interface.cpp 2022-05-03 12:11:15.000000000 +0200 @@ -69,6 +69,7 @@ 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 @@ return; } - if (!surface->isMapped() && isCommitted) { + // detect reset + if (!surface->isMapped() && firstBufferAttached) { isCommitted = false; + firstBufferAttached = false; isConfigured = false; current = LayerSurfaceV1State(); @@ -303,6 +306,9 @@ 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(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/src/server/outputconfiguration_v2_interface.cpp new/kwayland-server-5.24.5/src/server/outputconfiguration_v2_interface.cpp --- old/kwayland-server-5.24.4/src/server/outputconfiguration_v2_interface.cpp 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/src/server/outputconfiguration_v2_interface.cpp 2022-05-03 12:11:15.000000000 +0200 @@ -64,6 +64,9 @@ Q_UNUSED(resource) OutputDeviceV2Interface *output = OutputDeviceV2Interface::get(outputdevice); OutputDeviceModeV2Interface *mode = OutputDeviceModeV2Interface::get(modeResource); + if (!mode) { + return; + } pendingChanges(output)->d->size = mode->size(); pendingChanges(output)->d->refreshRate = mode->refreshRate(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/src/server/outputdevice_v2_interface.cpp new/kwayland-server-5.24.5/src/server/outputdevice_v2_interface.cpp --- old/kwayland-server-5.24.4/src/server/outputdevice_v2_interface.cpp 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/src/server/outputdevice_v2_interface.cpp 2022-05-03 12:11:15.000000000 +0200 @@ -31,7 +31,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ } for (auto resource : clientResources) { - d->sendNewMode(resource, d->currentMode); - d->sendCurrentMode(resource, d->currentMode); + d->sendCurrentMode(resource); } qDeleteAll(oldModes.crbegin(), oldModes.crend()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-server-5.24.4/src/server/surface_interface.cpp new/kwayland-server-5.24.5/src/server/surface_interface.cpp --- old/kwayland-server-5.24.4/src/server/surface_interface.cpp 2022-03-29 13:23:12.000000000 +0200 +++ new/kwayland-server-5.24.5/src/server/surface_interface.cpp 2022-05-03 12:11:15.000000000 +0200 @@ -678,7 +678,13 @@ 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()