Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kwayland for openSUSE:Factory checked in at 2022-10-11 18:00:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwayland (Old) and /work/SRC/openSUSE:Factory/.kwayland.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwayland" Tue Oct 11 18:00:25 2022 rev:105 rq:1009028 version:5.99.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kwayland/kwayland.changes 2022-09-23 14:15:18.245992525 +0200 +++ /work/SRC/openSUSE:Factory/.kwayland.new.2275/kwayland.changes 2022-10-11 18:02:27.881785571 +0200 @@ -1,0 +2,21 @@ +Sat Oct 1 15:56:09 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.99.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.99.0 +- Changes since 5.98.0: + * Fix compile error with wl_output < v4 + * PlasmaWindowManagement: Avoid unbounded recursion and delay in readData (kde#453124) + * client/plasmashell: fix applet popups displacing other windows (kde#459523) + * client/plasmashell: add fallback for applet popups + * require PlasmaWaylandProtocols 1.9.0 and bump supported plasmashell version to 8 + * .gitlab-ci.yml: enable static builds + * ConnectionThread: connect by symbol rather than by name + * ConnectionThread: Move event dispatcing into a separate method + * ConnectionThread: Make sure we consume properly the threads + * Add support for wl_output version 4 +- Drop patch, merged upstream: + * 0001-client-plasmashell-add-fallback-for-applet-popups.patch + +------------------------------------------------------------------- Old: ---- 0001-client-plasmashell-add-fallback-for-applet-popups.patch kwayland-5.98.0.tar.xz kwayland-5.98.0.tar.xz.sig New: ---- kwayland-5.99.0.tar.xz kwayland-5.99.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwayland.spec ++++++ --- /var/tmp/diff_new_pack.jnCp3f/_old 2022-10-11 18:02:28.929787265 +0200 +++ /var/tmp/diff_new_pack.jnCp3f/_new 2022-10-11 18:02:28.933787271 +0200 @@ -16,7 +16,7 @@ # -%define _tar_path 5.98 +%define _tar_path 5.99 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) @@ -24,7 +24,7 @@ # Only needed for the package signature condition %bcond_without released Name: kwayland -Version: 5.98.0 +Version: 5.99.0 Release: 0 Summary: KDE Wayland library License: LGPL-2.1-or-later @@ -35,8 +35,6 @@ Source1: %{name}-%{version}.tar.xz.sig Source2: frameworks.keyring %endif -# PATCH-FIX-UPSTREAM -Patch0: 0001-client-plasmashell-add-fallback-for-applet-popups.patch BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version} BuildRequires: fdupes BuildRequires: kf5-filesystem ++++++ kwayland-5.98.0.tar.xz -> kwayland-5.99.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/.gitlab-ci.yml new/kwayland-5.99.0/.gitlab-ci.yml --- old/kwayland-5.98.0/.gitlab-ci.yml 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/.gitlab-ci.yml 2022-10-01 15:21:53.000000000 +0200 @@ -3,6 +3,7 @@ include: - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-static.yml - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd-qt6.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/CMakeLists.txt new/kwayland-5.99.0/CMakeLists.txt --- old/kwayland-5.98.0/CMakeLists.txt 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/CMakeLists.txt 2022-10-01 15:21:53.000000000 +0200 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.98.0") # handled by release scripts +set(KF_VERSION "5.99.0") # handled by release scripts project(KWayland VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.98.0 NO_MODULE) +find_package(ECM 5.99.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/Modules) @@ -65,7 +65,7 @@ find_package(EGL) set_package_properties(EGL PROPERTIES TYPE REQUIRED) -find_package(PlasmaWaylandProtocols 1.7.0 CONFIG) +find_package(PlasmaWaylandProtocols 1.9.0 CONFIG) set_package_properties(PlasmaWaylandProtocols PROPERTIES TYPE REQUIRED) # adjusting CMAKE_C_FLAGS to get wayland protocols to compile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/CMakeLists.txt new/kwayland-5.99.0/src/client/CMakeLists.txt --- old/kwayland-5.98.0/src/client/CMakeLists.txt 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/CMakeLists.txt 2022-10-01 15:21:53.000000000 +0200 @@ -280,7 +280,7 @@ EXPORT_NAME WaylandClient ) -install(TARGETS KF5WaylandClient EXPORT KF5WaylandTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS KF5WaylandClient EXPORT KF5WaylandTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS}) set(CLIENT_LIB_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/KWayland/Client/kwaylandclient_export.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/connection_thread.cpp new/kwayland-5.99.0/src/client/connection_thread.cpp --- old/kwayland-5.98.0/src/client/connection_thread.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/connection_thread.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -18,6 +18,8 @@ // Wayland #include <wayland-client-protocol.h> +#include <poll.h> + namespace KWayland { namespace Client @@ -30,6 +32,7 @@ void doInitConnection(); void setupSocketNotifier(); void setupSocketFileWatcher(); + void dispatchEvents(); wl_display *display = nullptr; int fd = -1; @@ -106,22 +109,45 @@ const int fd = wl_display_get_fd(display); socketNotifier.reset(new QSocketNotifier(fd, QSocketNotifier::Read)); QObject::connect(socketNotifier.data(), &QSocketNotifier::activated, q, [this]() { - if (!display) { - return; - } - if (wl_display_dispatch(display) == -1) { - error = wl_display_get_error(display); - if (error != 0) { - if (display) { - free(display); - display = nullptr; - } - Q_EMIT q->errorOccurred(); - return; + dispatchEvents(); + }); +} + +void ConnectionThread::Private::dispatchEvents() +{ + if (!display) { + return; + } + // first dispatch any pending events on the default queue + while (wl_display_prepare_read(display) != 0) { + wl_display_dispatch_pending(display); + } + wl_display_flush(display); + // then check if there are any new events waiting to be read + struct pollfd pfd; + pfd.fd = wl_display_get_fd(display); + pfd.events = POLLIN; + int ret = poll(&pfd, 1, 0); + if (ret > 0) { + // if yes, read them now + wl_display_read_events(display); + } else { + wl_display_cancel_read(display); + } + + // finally, dispatch the default queue and all frame queues + if (wl_display_dispatch_pending(display) == -1) { + error = wl_display_get_error(display); + if (error != 0) { + if (display) { + free(display); + display = nullptr; } + Q_EMIT q->errorOccurred(); + return; } - Q_EMIT q->eventsRead(); - }); + } + Q_EMIT q->eventsRead(); } void ConnectionThread::Private::setupSocketFileWatcher() @@ -208,7 +234,7 @@ void ConnectionThread::initConnection() { - QMetaObject::invokeMethod(this, "doInitConnection", Qt::QueuedConnection); + QMetaObject::invokeMethod(this, &ConnectionThread::doInitConnection, Qt::QueuedConnection); } void ConnectionThread::doInitConnection() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/output.cpp new/kwayland-5.99.0/src/client/output.cpp --- old/kwayland-5.98.0/src/client/output.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/output.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -39,6 +39,8 @@ Transform transform = Transform::Normal; Modes modes; Modes::iterator currentMode = modes.end(); + QString name; + QString description; static Output *get(wl_output *o); @@ -56,6 +58,8 @@ static void modeCallback(void *data, wl_output *output, uint32_t flags, int32_t width, int32_t height, int32_t refresh); static void doneCallback(void *data, wl_output *output); static void scaleCallback(void *data, wl_output *output, int32_t scale); + static void nameCallback(void *data, struct wl_output *wl_output, const char *name); + static void descriptionCallback(void *data, struct wl_output *wl_output, const char *description); void setPhysicalSize(const QSize &size); void setGlobalPosition(const QPoint &pos); void setManufacturer(const QString &manufacturer); @@ -120,7 +124,15 @@ d->output.release(); } -wl_output_listener Output::Private::s_outputListener = {geometryCallback, modeCallback, doneCallback, scaleCallback}; +wl_output_listener Output::Private::s_outputListener = { + geometryCallback, modeCallback, doneCallback, scaleCallback, +#ifdef WL_OUTPUT_NAME_SINCE_VERSION + nameCallback, +#endif +#ifdef WL_OUTPUT_DESCRIPTION_SINCE_VERSION + descriptionCallback, +#endif +}; void Output::Private::geometryCallback(void *data, wl_output *output, @@ -234,6 +246,20 @@ o->setScale(scale); } +void Output::Private::nameCallback(void *data, struct wl_output *wl_output, const char *name) +{ + auto o = reinterpret_cast<Output::Private *>(data); + Q_ASSERT(o->output == wl_output); + o->name = QString::fromUtf8(name); +} + +void Output::Private::descriptionCallback(void *data, struct wl_output *wl_output, const char *description) +{ + auto o = reinterpret_cast<Output::Private *>(data); + Q_ASSERT(o->output == wl_output); + o->description = QString::fromUtf8(description); +} + void Output::Private::doneCallback(void *data, wl_output *output) { auto o = reinterpret_cast<Output::Private *>(data); @@ -365,6 +391,16 @@ return d->modes; } +QString Output::name() const +{ + return d->name; +} + +QString Output::description() const +{ + return d->description; +} + Output::operator wl_output *() { return d->output; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/output.h new/kwayland-5.99.0/src/client/output.h --- old/kwayland-5.98.0/src/client/output.h 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/output.h 2022-10-01 15:21:53.000000000 +0200 @@ -175,6 +175,16 @@ QList<Mode> modes() const; /** + * Returns the name of the output. + **/ + QString name() const; + + /** + * Returns the human readable description of the output. + **/ + QString description() const; + + /** * Sets the @p queue to use for bound proxies. **/ void setEventQueue(EventQueue *queue); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/plasmashell.cpp new/kwayland-5.99.0/src/client/plasmashell.cpp --- old/kwayland-5.98.0/src/client/plasmashell.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/plasmashell.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -276,7 +276,15 @@ } break; case Role::AppletPopup: - wlRole = ORG_KDE_PLASMA_SURFACE_ROLE_APPLETPOPUP; + // ORG_KDE_PLASMA_SURFACE_ROLE_APPLETPOPUP_SINCE_VERSION is not used for this check + // because it wrongly is 7 with old plasma wayland protocols + if (wl_proxy_get_version(d->surface) < 8) { + // dock is what applet popups were before + wlRole = ORG_KDE_PLASMA_SURFACE_ROLE_PANEL; + setPanelBehavior(PanelBehavior::WindowsGoBelow); + } else { + wlRole = ORG_KDE_PLASMA_SURFACE_ROLE_APPLETPOPUP; + } break; default: Q_UNREACHABLE(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/plasmawindowmanagement.cpp new/kwayland-5.99.0/src/client/plasmawindowmanagement.cpp --- old/kwayland-5.98.0/src/client/plasmawindowmanagement.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/plasmawindowmanagement.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -663,16 +663,14 @@ int n; while (true) { n = QT_READ(fd, buf, sizeof buf); - if (n == -1 && (errno == EAGAIN) && ++retryCount < 1000) { + if (n > 0) { + data.append(buf, n); + } else if (n == -1 && (errno == EAGAIN) && ++retryCount < 1000) { usleep(1000); } else { break; } } - if (n > 0) { - data.append(buf, n); - n = readData(fd, data); - } return n; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/client/registry.cpp new/kwayland-5.99.0/src/client/registry.cpp --- old/kwayland-5.98.0/src/client/registry.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/client/registry.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -123,7 +123,7 @@ &Registry::dataDeviceManagerRemoved }}, {Registry::Interface::Output, { - 3, + 4, QByteArrayLiteral("wl_output"), &wl_output_interface, &Registry::outputAnnounced, @@ -158,7 +158,7 @@ &Registry::subCompositorRemoved }}, {Registry::Interface::PlasmaShell, { - 7, + 8, QByteArrayLiteral("org_kde_plasma_shell"), &org_kde_plasma_shell_interface, &Registry::plasmaShellAnnounced, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/server/CMakeLists.txt new/kwayland-5.99.0/src/server/CMakeLists.txt --- old/kwayland-5.98.0/src/server/CMakeLists.txt 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/server/CMakeLists.txt 2022-10-01 15:21:53.000000000 +0200 @@ -328,7 +328,7 @@ EXPORT_NAME WaylandServer ) -install(TARGETS KF5WaylandServer EXPORT KF5WaylandTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS KF5WaylandServer EXPORT KF5WaylandTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS}) set(SERVER_LIB_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/KWayland/Server/kwaylandserver_export.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/server/idle_interface.cpp new/kwayland-5.99.0/src/server/idle_interface.cpp --- old/kwayland-5.98.0/src/server/idle_interface.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/server/idle_interface.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -145,7 +145,7 @@ void IdleInterface::simulateUserActivity() { Q_D(); - for (auto i : qAsConst(d->idleTimeouts)) { + for (auto i : std::as_const(d->idleTimeouts)) { i->d_func()->simulateUserActivity(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/server/keystate_interface.cpp new/kwayland-5.99.0/src/server/keystate_interface.cpp --- old/kwayland-5.98.0/src/server/keystate_interface.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/server/keystate_interface.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -74,7 +74,7 @@ auto dptr = static_cast<KeyStateInterface::Private *>(d.data()); dptr->m_keyStates[int(key)] = state; - for (auto r : qAsConst(dptr->m_resources)) { + for (auto r : std::as_const(dptr->m_resources)) { org_kde_kwin_keystate_send_stateChanged(r, int(key), int(state)); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/server/linuxdmabuf_v1_interface.cpp new/kwayland-5.99.0/src/server/linuxdmabuf_v1_interface.cpp --- old/kwayland-5.98.0/src/server/linuxdmabuf_v1_interface.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/server/linuxdmabuf_v1_interface.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -417,7 +417,7 @@ modifiers << DRM_FORMAT_MOD_INVALID; } - for (uint64_t modifier : qAsConst(modifiers)) { + for (uint64_t modifier : std::as_const(modifiers)) { if (version >= ZWP_LINUX_DMABUF_V1_MODIFIER_SINCE_VERSION) { const uint32_t modifier_lo = modifier & 0xFFFFFFFF; const uint32_t modifier_hi = modifier >> 32; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/server/seat_interface.cpp new/kwayland-5.99.0/src/server/seat_interface.cpp --- old/kwayland-5.98.0/src/server/seat_interface.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/server/seat_interface.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -693,7 +693,7 @@ } if (p.isEmpty()) { Q_EMIT focusedPointerChanged(nullptr); - for (auto p : qAsConst(framePointers)) { + for (auto p : std::as_const(framePointers)) { p->d_func()->sendFrame(); } return; @@ -704,7 +704,7 @@ (*it)->setFocusedSurface(surface, serial); framePointers << *it; } - for (auto p : qAsConst(framePointers)) { + for (auto p : std::as_const(framePointers)) { p->d_func()->sendFrame(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.98.0/src/server/tablet_interface.cpp new/kwayland-5.99.0/src/server/tablet_interface.cpp --- old/kwayland-5.98.0/src/server/tablet_interface.cpp 2022-09-05 11:31:19.000000000 +0200 +++ new/kwayland-5.99.0/src/server/tablet_interface.cpp 2022-10-01 15:21:53.000000000 +0200 @@ -353,11 +353,11 @@ void zwp_tablet_seat_v2_bind_resource(Resource *resource) override { - for (auto iface : qAsConst(m_tablets)) { + for (auto iface : std::as_const(m_tablets)) { sendTabletAdded(resource, iface); } - for (auto *tool : qAsConst(m_tools)) { + for (auto *tool : std::as_const(m_tools)) { sendToolAdded(resource, tool); } } @@ -370,7 +370,7 @@ tool->d->send_type(toolResource, tool->d->m_type); tool->d->send_hardware_serial(toolResource, tool->d->m_hardwareSerialHigh, tool->d->m_hardwareSerialLow); tool->d->send_hardware_id_wacom(toolResource, tool->d->m_hardwareIdHigh, tool->d->m_hardwareIdLow); - for (uint32_t cap : qAsConst(tool->d->m_capabilities)) { + for (uint32_t cap : std::as_const(tool->d->m_capabilities)) { tool->d->send_capability(toolResource, cap); } tool->d->send_done(toolResource); @@ -384,7 +384,7 @@ if (tablet->d->m_vendorId && tablet->d->m_productId) { tablet->d->send_id(tabletResource, tablet->d->m_vendorId, tablet->d->m_productId); } - for (const QString &path : qAsConst(tablet->d->m_paths)) { + for (const QString &path : std::as_const(tablet->d->m_paths)) { tablet->d->send_path(tabletResource, path); } tablet->d->send_done(tabletResource);