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-09-13 15:09:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwayland (Old) and /work/SRC/openSUSE:Factory/.kwayland.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwayland" Tue Sep 13 15:09:10 2022 rev:103 rq:1002859 version:5.98.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kwayland/kwayland.changes 2022-08-15 19:59:49.161327646 +0200 +++ /work/SRC/openSUSE:Factory/.kwayland.new.2083/kwayland.changes 2022-09-13 15:10:43.440868098 +0200 @@ -1,0 +2,11 @@ +Tue Sep 6 07:17:22 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.98.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.98.0 +- Changes since 5.97.0: + * Add FreeBSD Qt6 CI support + * Auto cleanup the dangling KWayland::Client::Surface returned from fromWindow + +------------------------------------------------------------------- Old: ---- kwayland-5.97.0.tar.xz kwayland-5.97.0.tar.xz.sig New: ---- kwayland-5.98.0.tar.xz kwayland-5.98.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwayland.spec ++++++ --- /var/tmp/diff_new_pack.NRWhs5/_old 2022-09-13 15:10:43.892869371 +0200 +++ /var/tmp/diff_new_pack.NRWhs5/_new 2022-09-13 15:10:43.896869381 +0200 @@ -16,7 +16,7 @@ # -%define _tar_path 5.97 +%define _tar_path 5.98 # 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.97.0 +Version: 5.98.0 Release: 0 Summary: KDE Wayland library License: LGPL-2.1-or-later @@ -39,6 +39,7 @@ BuildRequires: fdupes BuildRequires: kf5-filesystem BuildRequires: libQt5Gui-private-headers-devel >= 5.15.0 +BuildRequires: libqt5-qtwayland-private-headers-devel >= 5.15.0 BuildRequires: pkgconfig BuildRequires: cmake(PlasmaWaylandProtocols) >= 1.2.1 BuildRequires: cmake(Qt5Concurrent) >= 5.15.0 ++++++ kwayland-5.97.0.tar.xz -> kwayland-5.98.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.97.0/.gitlab-ci.yml new/kwayland-5.98.0/.gitlab-ci.yml --- old/kwayland-5.97.0/.gitlab-ci.yml 2022-08-07 14:23:08.000000000 +0200 +++ new/kwayland-5.98.0/.gitlab-ci.yml 2022-09-05 11:31:19.000000000 +0200 @@ -5,3 +5,4 @@ - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.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.97.0/CMakeLists.txt new/kwayland-5.98.0/CMakeLists.txt --- old/kwayland-5.97.0/CMakeLists.txt 2022-08-07 14:23:08.000000000 +0200 +++ new/kwayland-5.98.0/CMakeLists.txt 2022-09-05 11:31:19.000000000 +0200 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.97.0") # handled by release scripts +set(KF_VERSION "5.98.0") # handled by release scripts project(KWayland VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.97.0 NO_MODULE) +find_package(ECM 5.98.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) @@ -40,12 +40,16 @@ # Dependencies set(REQUIRED_QT_VERSION 5.15.2) find_package(Qt${QT_MAJOR_VERSION}Gui ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Private) -find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Concurrent WaylandClient) +find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Concurrent) +find_package(Qt${QT_MAJOR_VERSION}WaylandClient ${REQUIRED_QT_VERSION} CONFIG REQUIRED NO_MODULE COMPONENTS Private) # With Qt6 use qt_generate_wayland_protocol_client_sources instead of # ecm_add_qtwayland_client_protocol (from ECM's QtWaylandScanner) if (QT_MAJOR_VERSION STREQUAL "5") find_package(QtWaylandScanner REQUIRED) + find_package(Qt5XkbCommonSupport REQUIRED) # Needed by Qt5::WaylandClientPrivate + find_package(PkgConfig REQUIRED) + pkg_check_modules(XKBCommon REQUIRED IMPORTED_TARGET xkbcommon) endif() find_package(Wayland 1.15 COMPONENTS Client Server) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.97.0/src/client/CMakeLists.txt new/kwayland-5.98.0/src/client/CMakeLists.txt --- old/kwayland-5.97.0/src/client/CMakeLists.txt 2022-08-07 14:23:08.000000000 +0200 +++ new/kwayland-5.98.0/src/client/CMakeLists.txt 2022-09-05 11:31:19.000000000 +0200 @@ -1,6 +1,7 @@ remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY) remove_definitions(-DQT_NO_CAST_FROM_ASCII) remove_definitions(-DQT_NO_CAST_TO_ASCII) +remove_definitions(-DQT_NO_KEYWORDS) # needed to access QPA include_directories(SYSTEM ${Qt${QT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS}) @@ -238,7 +239,10 @@ BASENAME remote-access ) -add_library(KF5WaylandClient ${CLIENT_LIB_SRCS}) +set_source_files_properties(${CLIENT_LIB_SRCS} PROPERTIES + COMPILE_FLAGS -DQT_NO_KEYWORDS) + +add_library(KF5WaylandClient ${CLIENT_LIB_SRCS} surface_p.cpp) add_library(KF5::WaylandClient ALIAS KF5WaylandClient) ecm_generate_export_header(KF5WaylandClient BASE_NAME @@ -260,8 +264,17 @@ PUBLIC Qt${QT_MAJOR_VERSION}::Gui PRIVATE Wayland::Client Qt${QT_MAJOR_VERSION}::Concurrent + Qt${QT_MAJOR_VERSION}::WaylandClientPrivate ) +if (QT_MAJOR_VERSION EQUAL "5") + target_link_libraries(KF5WaylandClient + PRIVATE + Qt::XkbCommonSupportPrivate + PkgConfig::XKBCommon + ) +endif() + set_target_properties(KF5WaylandClient PROPERTIES VERSION ${KWAYLAND_VERSION} SOVERSION ${KWAYLAND_SOVERSION} EXPORT_NAME WaylandClient diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.97.0/src/client/surface.cpp new/kwayland-5.98.0/src/client/surface.cpp --- old/kwayland-5.97.0/src/client/surface.cpp 2022-08-07 14:23:08.000000000 +0200 +++ new/kwayland-5.98.0/src/client/surface.cpp 2022-09-05 11:31:19.000000000 +0200 @@ -6,12 +6,12 @@ #include "surface.h" #include "output.h" #include "region.h" +#include "surface_p.h" #include "wayland_pointer_p.h" #include <QGuiApplication> #include <QRegion> #include <QVector> -#include <qpa/qplatformnativeinterface.h> // Wayland #include <wayland-client-protocol.h> @@ -19,34 +19,6 @@ { namespace Client { -class Q_DECL_HIDDEN Surface::Private -{ -public: - Private(Surface *q); - void setupFrameCallback(); - - WaylandPointer<wl_surface, wl_surface_destroy> surface; - bool frameCallbackInstalled = false; - QSize size; - bool foreign = false; - qint32 scale = 1; - QVector<Output *> outputs; - - void setup(wl_surface *s); - - static QList<Surface *> s_surfaces; - -private: - void handleFrameCallback(); - static void frameCallback(void *data, wl_callback *callback, uint32_t time); - static void enterCallback(void *data, wl_surface *wl_surface, wl_output *output); - static void leaveCallback(void *data, wl_surface *wl_surface, wl_output *output); - void removeOutput(Output *o); - - Surface *q; - static const wl_callback_listener s_listener; - static const wl_surface_listener s_surfaceListener; -}; QList<Surface *> Surface::Private::s_surfaces = QList<Surface *>(); @@ -68,44 +40,6 @@ release(); } -Surface *Surface::fromWindow(QWindow *window) -{ - if (!window) { - return nullptr; - } - QPlatformNativeInterface *native = qApp->platformNativeInterface(); - if (!native) { - return nullptr; - } - window->create(); - wl_surface *s = reinterpret_cast<wl_surface *>(native->nativeResourceForWindow(QByteArrayLiteral("surface"), window)); - if (!s) { - return nullptr; - } - if (auto surface = get(s)) { - return surface; - } - Surface *surface = new Surface(window); - surface->d->surface.setup(s, true); - return surface; -} - -Surface *Surface::fromQtWinId(WId wid) -{ - QWindow *window = nullptr; - - for (auto win : qApp->allWindows()) { - if (win->winId() == wid) { - window = win; - break; - } - } - - if (!window) { - return nullptr; - } - return fromWindow(window); -} void Surface::release() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.97.0/src/client/surface.h new/kwayland-5.98.0/src/client/surface.h --- old/kwayland-5.97.0/src/client/surface.h 2022-08-07 14:23:08.000000000 +0200 +++ new/kwayland-5.98.0/src/client/surface.h 2022-09-05 11:31:19.000000000 +0200 @@ -53,7 +53,9 @@ * @c nullptr as well as for not created QWindows. * * The returned Surface will be fully setup, but won't be released. It gets automatically - * destroyed together with the @p window. + * destroyed together with the @p window or when the internal wl_surface get destroyed. + * QtWayland may destroy wl_surface when hiding the window, you should always call + * this function instead of holding the returned pointer. * @since 5.4 **/ static Surface *fromWindow(QWindow *window); @@ -64,9 +66,10 @@ * @c nullptr as well as for not created QWindows. * * The returned Surface will be fully setup, but won't be released. It gets automatically - * destroyed together with the QWindow corresponding + * destroyed together with the QWindow or the wl_surface corresponding. * the @p wid. * @since 5.5 + * @see fromWindow **/ static Surface *fromQtWinId(WId wid); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.97.0/src/client/surface_p.cpp new/kwayland-5.98.0/src/client/surface_p.cpp --- old/kwayland-5.97.0/src/client/surface_p.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kwayland-5.98.0/src/client/surface_p.cpp 2022-09-05 11:31:19.000000000 +0200 @@ -0,0 +1,65 @@ +/* + SPDX-FileCopyrightText: 2014 Martin Gr????lin <mgraess...@kde.org> + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ + +#include "surface_p.h" +#include "surface.h" + +#include <QGuiApplication> +#include <private/qwaylandwindow_p.h> +#include <qpa/qplatformnativeinterface.h> + +namespace KWayland +{ +namespace Client +{ + +// The file split from surface.cpp because QtWaylandClient private headers require to unset QT_NO_KEYWORDS. +Surface *Surface::fromWindow(QWindow *window) +{ + if (!window) { + return nullptr; + } + QPlatformNativeInterface *native = qApp->platformNativeInterface(); + if (!native) { + return nullptr; + } + window->create(); + wl_surface *s = reinterpret_cast<wl_surface *>(native->nativeResourceForWindow(QByteArrayLiteral("surface"), window)); + if (!s) { + return nullptr; + } + if (auto surface = get(s)) { + return surface; + } + Surface *surface = new Surface(window); + surface->d->surface.setup(s, true); + + auto waylandWindow = dynamic_cast<QtWaylandClient::QWaylandWindow *>(window->handle()); + if (waylandWindow) { + connect(waylandWindow, &QtWaylandClient::QWaylandWindow::wlSurfaceDestroyed, surface, &QObject::deleteLater); + } + return surface; +} + +Surface *Surface::fromQtWinId(WId wid) +{ + QWindow *window = nullptr; + + for (auto win : qApp->allWindows()) { + if (win->winId() == wid) { + window = win; + break; + } + } + + if (!window) { + return nullptr; + } + return fromWindow(window); +} + +} +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwayland-5.97.0/src/client/surface_p.h new/kwayland-5.98.0/src/client/surface_p.h --- old/kwayland-5.97.0/src/client/surface_p.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kwayland-5.98.0/src/client/surface_p.h 2022-09-05 11:31:19.000000000 +0200 @@ -0,0 +1,50 @@ +/* + SPDX-FileCopyrightText: 2014 Martin Gr????lin <mgraess...@kde.org> + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ +#ifndef WAYLAND_SURFACE_P_H +#define WAYLAND_SURFACE_P_H + +#include "surface.h" +#include "wayland_pointer_p.h" +// Wayland +#include <wayland-client-protocol.h> + +namespace KWayland +{ +namespace Client +{ +class Q_DECL_HIDDEN Surface::Private +{ +public: + Private(Surface *q); + void setupFrameCallback(); + + WaylandPointer<wl_surface, wl_surface_destroy> surface; + bool frameCallbackInstalled = false; + QSize size; + bool foreign = false; + qint32 scale = 1; + QVector<Output *> outputs; + + void setup(wl_surface *s); + + static QList<Surface *> s_surfaces; + +private: + void handleFrameCallback(); + static void frameCallback(void *data, wl_callback *callback, uint32_t time); + static void enterCallback(void *data, wl_surface *wl_surface, wl_output *output); + static void leaveCallback(void *data, wl_surface *wl_surface, wl_output *output); + void removeOutput(Output *o); + + Surface *q; + static const wl_callback_listener s_listener; + static const wl_surface_listener s_surfaceListener; +}; + +} +} + +#endif