Hello community,

here is the log from the commit of package kwayland for openSUSE:Leap:15.2 
checked in at 2020-05-12 11:39:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/kwayland (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.kwayland.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwayland"

Tue May 12 11:39:13 2020 rev:69 rq:802203 version:5.70.0

Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/kwayland/kwayland.changes      2020-04-21 
19:05:56.535795770 +0200
+++ /work/SRC/openSUSE:Leap:15.2/.kwayland.new.2738/kwayland.changes    
2020-05-12 11:39:36.816653540 +0200
@@ -1,0 +2,13 @@
+Sun May  3 09:40:15 UTC 2020 - Christophe Giboudeaux <[email protected]>
+
+- Update to 5.70.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/kde-frameworks-5.70.0
+- Changes since 5.69.0:
+  * [Wayland] Add to PlasmaWindowManagement protocol windows stacking order
+  * Add wrapper for wl_global_remove
+  * [server] Add some sub-surface life cycle signals
+  * [autotests] Optimistic attempt to fix RemoteAccessTest reilability
+
+-------------------------------------------------------------------

Old:
----
  kwayland-5.69.0.tar.xz
  kwayland-5.69.0.tar.xz.sig

New:
----
  kwayland-5.70.0.tar.xz
  kwayland-5.70.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kwayland.spec ++++++
--- /var/tmp/diff_new_pack.sPxhBM/_old  2020-05-12 11:39:37.536655052 +0200
+++ /var/tmp/diff_new_pack.sPxhBM/_new  2020-05-12 11:39:37.540655061 +0200
@@ -16,7 +16,7 @@
 #
 
 
-%define _tar_path 5.69
+%define _tar_path 5.70
 # 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 lang
 Name:           kwayland
-Version:        5.69.0
+Version:        5.70.0
 Release:        0
 Summary:        KDE Wayland library
 License:        LGPL-2.1-or-later


++++++ kwayland-5.69.0.tar.xz -> kwayland-5.70.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.69.0/CMakeLists.txt 
new/kwayland-5.70.0/CMakeLists.txt
--- old/kwayland-5.69.0/CMakeLists.txt  2020-04-05 00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/CMakeLists.txt  2020-05-03 00:00:58.000000000 +0200
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.5)
 
-set(KF5_VERSION "5.69.0") # handled by release scripts
+set(KF5_VERSION "5.70.0") # handled by release scripts
 project(KWayland VERSION ${KF5_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.69.0  NO_MODULE)
+find_package(ECM 5.70.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)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.69.0/autotests/client/test_remote_access.cpp 
new/kwayland-5.70.0/autotests/client/test_remote_access.cpp
--- old/kwayland-5.69.0/autotests/client/test_remote_access.cpp 2020-04-05 
00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/autotests/client/test_remote_access.cpp 2020-05-03 
00:00:58.000000000 +0200
@@ -242,11 +242,6 @@
     m_display->dispatchEvents();
     QVERIFY(m_remoteAccessInterface->isBound()); // now we have 2 clients
 
-    QSignalSpy bufferReadySpy1(client1->remoteAccess, 
&RemoteAccessManager::bufferReady);
-    QVERIFY(bufferReadySpy1.isValid());
-    QSignalSpy bufferReadySpy2(client2->remoteAccess, 
&RemoteAccessManager::bufferReady);
-    QVERIFY(bufferReadySpy2.isValid());
-
     BufferHandle *buf = new BufferHandle();
     QTemporaryFile *tmpFile = new QTemporaryFile(this);
     tmpFile->open();
@@ -255,36 +250,51 @@
     buf->setSize(50, 50);
     buf->setFormat(100500);
     buf->setStride(7800);
-    m_remoteAccessInterface->sendBufferReady(m_outputInterface[0], buf);
 
-    // wait for event loop
-    QVERIFY(bufferReadySpy1.wait());
-    // receive buffer at client 1
-    QCOMPARE(bufferReadySpy1.size(), 1);
-    auto rbuf1 = bufferReadySpy1.takeFirst()[1].value<const RemoteBuffer *>();
-    QSignalSpy paramsObtainedSpy1(rbuf1, &RemoteBuffer::parametersObtained);
-    QVERIFY(paramsObtainedSpy1.isValid());
+    bool buffer1ParametersReceived = false;
+    bool buffer2ParametersReceived = false;
 
-    if (bufferReadySpy2.size() == 0) {
-        QVERIFY(bufferReadySpy2.wait());
-    }
-    // receive buffer at client 2
-    QCOMPARE(bufferReadySpy2.size(), 1);
-    auto rbuf2 = bufferReadySpy2.takeFirst()[1].value<const RemoteBuffer *>();
-    QSignalSpy paramsObtainedSpy2(rbuf2, &RemoteBuffer::parametersObtained);
-    QVERIFY(paramsObtainedSpy2.isValid());
-
-    // wait for event loop
-    QVERIFY(paramsObtainedSpy1.size() == 1 || paramsObtainedSpy1.wait());
-    QCOMPARE(paramsObtainedSpy1.size(), 1);
-    if (paramsObtainedSpy2.size() == 0) {
-        QVERIFY(paramsObtainedSpy2.wait());
+    const RemoteBuffer *rbuf1 = nullptr;
+    const RemoteBuffer *rbuf2 = nullptr;
+
+    client1->connection->flush();
+    client2->connection->flush();
+
+    {
+        QEventLoop e;
+        QTimer::singleShot(1000, &e, &QEventLoop::quit); //safety timer
+        connect(client1->remoteAccess, &RemoteAccessManager::bufferReady, [&] 
(const void*, const RemoteBuffer *buffer) {
+                rbuf1 = buffer;
+                connect(rbuf1, &RemoteBuffer::parametersObtained, [&]() {
+                    buffer1ParametersReceived = true;
+                    if (buffer1ParametersReceived && 
buffer2ParametersReceived) {
+                        e.quit();
+                    }
+                });
+        });
+
+        connect(client2->remoteAccess, &RemoteAccessManager::bufferReady, [&] 
(const void*, const RemoteBuffer *buffer) {
+            rbuf2 = buffer;
+            connect(rbuf2, &RemoteBuffer::parametersObtained, [&]() {
+                buffer2ParametersReceived = true;
+                if (buffer1ParametersReceived && buffer2ParametersReceived) {
+                    e.quit();
+                }
+            });
+        });
+        m_remoteAccessInterface->sendBufferReady(m_outputInterface[0], buf);
+
+        e.exec();
     }
-    QCOMPARE(paramsObtainedSpy2.size(), 1);
+
+
+    QVERIFY(rbuf1);
+    QVERIFY(rbuf2);
+    QVERIFY(buffer1ParametersReceived);
+    QVERIFY(buffer2ParametersReceived);
 
     // release
     QSignalSpy bufferReleasedSpy(m_remoteAccessInterface, 
&RemoteAccessManagerInterface::bufferReleased);
-    QVERIFY(bufferReleasedSpy.isValid());
     delete rbuf1;
     QVERIFY(!bufferReleasedSpy.wait(1000)); // one client released, second 
still holds buffer!
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.69.0/src/client/plasmawindowmanagement.cpp 
new/kwayland-5.70.0/src/client/plasmawindowmanagement.cpp
--- old/kwayland-5.69.0/src/client/plasmawindowmanagement.cpp   2020-04-05 
00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/client/plasmawindowmanagement.cpp   2020-05-03 
00:00:58.000000000 +0200
@@ -34,14 +34,17 @@
     bool showingDesktop = false;
     QList<PlasmaWindow*> windows;
     PlasmaWindow *activeWindow = nullptr;
+    QVector<quint32> stackingOrder;
 
     void setup(org_kde_plasma_window_management *wm);
 
 private:
     static void showDesktopCallback(void *data, 
org_kde_plasma_window_management *org_kde_plasma_window_management, uint32_t 
state);
     static void windowCallback(void *data, org_kde_plasma_window_management 
*org_kde_plasma_window_management, uint32_t id);
+    static void stackingOrderCallback(void *data, 
org_kde_plasma_window_management *org_kde_plasma_window_management, wl_array 
*ids);
     void setShowDesktop(bool set);
     void windowCreated(org_kde_plasma_window *id, quint32 internalId);
+    void setStackingOrder(const QVector<quint32> &ids);
 
     static struct org_kde_plasma_window_management_listener s_listener;
     PlasmaWindowManagement *q;
@@ -139,7 +142,8 @@
 
 org_kde_plasma_window_management_listener 
PlasmaWindowManagement::Private::s_listener = {
     showDesktopCallback,
-    windowCallback
+    windowCallback,
+    stackingOrderCallback
 };
 
 void PlasmaWindowManagement::Private::setup(org_kde_plasma_window_management 
*windowManagement)
@@ -235,6 +239,25 @@
     );
 }
 
+void PlasmaWindowManagement::Private::stackingOrderCallback(void *data, 
org_kde_plasma_window_management *interface, wl_array *ids)
+{
+    auto wm = reinterpret_cast<PlasmaWindowManagement::Private*>(data);
+    Q_ASSERT(wm->wm == interface);
+    QVector<quint32> destination;
+    destination.resize(ids->size / sizeof(uint32_t));
+    memcpy(destination.data(), ids->data, ids->size);
+    wm->setStackingOrder(destination);
+}
+
+void PlasmaWindowManagement::Private::setStackingOrder(const QVector<quint32> 
&ids)
+{
+    if (stackingOrder == ids) {
+        return;
+    }
+    stackingOrder = ids;
+    emit q->stackingOrderChanged();
+}
+
 PlasmaWindowManagement::PlasmaWindowManagement(QObject *parent)
     : QObject(parent)
     , d(new Private(this))
@@ -329,6 +352,11 @@
     return new PlasmaWindowModel(this);
 }
 
+QVector<quint32> PlasmaWindowManagement::stackingOrder() const
+{
+    return d->stackingOrder;
+}
+
 org_kde_plasma_window_listener PlasmaWindow::Private::s_listener = {
     titleChangedCallback,
     appIdChangedCallback,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.69.0/src/client/plasmawindowmanagement.h 
new/kwayland-5.70.0/src/client/plasmawindowmanagement.h
--- old/kwayland-5.69.0/src/client/plasmawindowmanagement.h     2020-04-05 
00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/client/plasmawindowmanagement.h     2020-05-03 
00:00:58.000000000 +0200
@@ -156,6 +156,11 @@
      **/
     PlasmaWindowModel *createWindowModel();
 
+    /**
+     * @returns windows stacking order
+     */
+    QVector<quint32> stackingOrder() const;
+
 Q_SIGNALS:
     /**
      * This signal is emitted right before the interface is released.
@@ -192,6 +197,12 @@
      **/
     void removed();
 
+    /**
+     * The stacking order changed
+     * @since 5.70
+     **/
+    void stackingOrderChanged();
+
 private:
     class Private;
     QScopedPointer<Private> d;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.69.0/src/client/protocols/plasma-window-management.xml 
new/kwayland-5.70.0/src/client/protocols/plasma-window-management.xml
--- old/kwayland-5.69.0/src/client/protocols/plasma-window-management.xml       
2020-04-05 00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/client/protocols/plasma-window-management.xml       
2020-05-03 00:00:58.000000000 +0200
@@ -6,7 +6,7 @@
     SPDX-License-Identifier: LGPL-2.1-or-later
   ]]></copyright>
 
-  <interface name="org_kde_plasma_window_management" version="10">
+  <interface name="org_kde_plasma_window_management" version="11">
     <description summary="application windows management">
       This interface manages application windows.
       It provides requests to show and hide the desktop and emits
@@ -71,9 +71,16 @@
       </description>
       <arg name="id" type="uint" summary="internal window Id"/>
     </event>
+
+    <event name="stacking_order_changed" since="11">
+      <description summary="notify the client when stacking order changed">
+        This event will be sent when stacking order changed and on bind
+      </description>
+      <arg name="ids" type="array" summary="internal windows id array"/>
+    </event>
   </interface>
 
-  <interface name="org_kde_plasma_window" version="10">
+  <interface name="org_kde_plasma_window" version="11">
     <description summary="interface to control application windows">
       Manages and control an application window.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.69.0/src/client/registry.cpp 
new/kwayland-5.70.0/src/client/registry.cpp
--- old/kwayland-5.69.0/src/client/registry.cpp 2020-04-05 00:38:02.000000000 
+0200
+++ new/kwayland-5.70.0/src/client/registry.cpp 2020-05-03 00:00:58.000000000 
+0200
@@ -171,7 +171,7 @@
         &Registry::plasmaVirtualDesktopManagementRemoved
     }},
     {Registry::Interface::PlasmaWindowManagement, {
-        10,
+        11,
         QByteArrayLiteral("org_kde_plasma_window_management"),
         &org_kde_plasma_window_management_interface,
         &Registry::plasmaWindowManagementAnnounced,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.69.0/src/server/plasmawindowmanagement_interface.cpp 
new/kwayland-5.70.0/src/server/plasmawindowmanagement_interface.cpp
--- old/kwayland-5.69.0/src/server/plasmawindowmanagement_interface.cpp 
2020-04-05 00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/server/plasmawindowmanagement_interface.cpp 
2020-05-03 00:00:58.000000000 +0200
@@ -31,12 +31,14 @@
 public:
     Private(PlasmaWindowManagementInterface *q, Display *d);
     void sendShowingDesktopState();
+    void sendStackingOrderChanged();
 
     ShowingDesktopState state = ShowingDesktopState::Disabled;
     QVector<wl_resource*> resources;
     QList<PlasmaWindowInterface*> windows;
     QPointer<PlasmaVirtualDesktopManagementInterface> 
plasmaVirtualDesktopManagementInterface = nullptr;
     quint32 windowIdCounter = 0;
+    QVector<quint32> stackingOrder;
 
 private:
     static void unbind(wl_resource *resource);
@@ -45,6 +47,7 @@
 
     void bind(wl_client *client, uint32_t version, uint32_t id) override;
     void sendShowingDesktopState(wl_resource *r);
+    void sendStackingOrderChanged(wl_resource *r);
 
     PlasmaWindowManagementInterface *q;
     static const struct org_kde_plasma_window_management_interface s_interface;
@@ -113,7 +116,7 @@
     static const struct org_kde_plasma_window_interface s_interface;
 };
 
-const quint32 PlasmaWindowManagementInterface::Private::s_version = 10;
+const quint32 PlasmaWindowManagementInterface::Private::s_version = 11;
 
 
PlasmaWindowManagementInterface::Private::Private(PlasmaWindowManagementInterface
 *q, Display *d)
     : Global::Private(d, &org_kde_plasma_window_management_interface, 
s_version)
@@ -152,6 +155,30 @@
     org_kde_plasma_window_management_send_show_desktop_changed(r, s);
 }
 
+void PlasmaWindowManagementInterface::Private::sendStackingOrderChanged()
+{
+    for (wl_resource *r : resources) {
+        sendStackingOrderChanged(r);
+    }
+}
+
+void 
PlasmaWindowManagementInterface::Private::sendStackingOrderChanged(wl_resource 
*r)
+{
+    if (wl_resource_get_version(r) < 
ORG_KDE_PLASMA_WINDOW_MANAGEMENT_STACKING_ORDER_CHANGED_SINCE_VERSION) {
+        return;
+    }
+
+    wl_array wlIds;
+    wl_array_init(&wlIds);
+    const size_t memLength = sizeof(uint32_t) * stackingOrder.size();
+    void *s = wl_array_add(&wlIds, memLength);
+    memcpy(s, stackingOrder.data(), memLength);
+
+    org_kde_plasma_window_management_send_stacking_order_changed(r, &wlIds);
+
+    wl_array_release(&wlIds);
+}
+
 void PlasmaWindowManagementInterface::Private::showDesktopCallback(wl_client 
*client, wl_resource *resource, uint32_t state)
 {
     Q_UNUSED(client)
@@ -207,6 +234,7 @@
     for (auto it = windows.constBegin(); it != windows.constEnd(); ++it) {
         org_kde_plasma_window_management_send_window(shell, 
(*it)->d->windowId);
     }
+    sendStackingOrderChanged();
 }
 
 void PlasmaWindowManagementInterface::Private::unbind(wl_resource *resource)
@@ -266,6 +294,16 @@
     window->d->unmap();
 }
 
+void PlasmaWindowManagementInterface::setStackingOrder(const QVector<quint32>& 
stackingOrder)
+{
+    Q_D();
+    if (d->stackingOrder == stackingOrder) {
+        return;
+    }
+    d->stackingOrder = stackingOrder;
+    d->sendStackingOrderChanged();
+}
+
 void 
PlasmaWindowManagementInterface::setPlasmaVirtualDesktopManagementInterface(PlasmaVirtualDesktopManagementInterface
 *manager)
 {
     Q_D();
@@ -958,5 +996,10 @@
     d->setApplicationMenuPaths(serviceName, objectPath);
 }
 
+quint32 PlasmaWindowInterface::internalId() const
+{
+    return d->windowId;
+}
+
 }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.69.0/src/server/plasmawindowmanagement_interface.h 
new/kwayland-5.70.0/src/server/plasmawindowmanagement_interface.h
--- old/kwayland-5.69.0/src/server/plasmawindowmanagement_interface.h   
2020-04-05 00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/server/plasmawindowmanagement_interface.h   
2020-05-03 00:00:58.000000000 +0200
@@ -73,6 +73,13 @@
      */
     PlasmaVirtualDesktopManagementInterface 
*plasmaVirtualDesktopManagementInterface() const;
 
+
+    /**
+     * Associate stacking order to this window management
+     * @since 5.70
+     */
+    void setStackingOrder(const QVector<quint32> &stackingOrder);
+
 Q_SIGNALS:
     void requestChangeShowingDesktop(ShowingDesktopState requestedState);
 
@@ -221,6 +228,13 @@
      */
     void setApplicationMenuPaths(const QString &serviceName, const QString 
&objectPath);
 
+    /**
+     * Return the window internal id
+     *
+     * @since 5.70
+     */
+    quint32 internalId() const;
+
 Q_SIGNALS:
     void closeRequested();
     /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.69.0/src/server/surface_interface.cpp 
new/kwayland-5.70.0/src/server/surface_interface.cpp
--- old/kwayland-5.69.0/src/server/surface_interface.cpp        2020-04-05 
00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/server/surface_interface.cpp        2020-05-03 
00:00:58.000000000 +0200
@@ -43,6 +43,7 @@
     subSurfacePending.children.append(child);
     current.children.append(child);
     Q_Q(SurfaceInterface);
+    emit q->childSubSurfaceAdded(child);
     emit q->subSurfaceTreeChanged();
     QObject::connect(child.data(), &SubSurfaceInterface::positionChanged, q, 
&SurfaceInterface::subSurfaceTreeChanged);
     QObject::connect(child->surface().data(), &SurfaceInterface::damaged, q, 
&SurfaceInterface::subSurfaceTreeChanged);
@@ -57,6 +58,7 @@
     subSurfacePending.children.removeAll(child);
     current.children.removeAll(child);
     Q_Q(SurfaceInterface);
+    emit q->childSubSurfaceRemoved(child);
     emit q->subSurfaceTreeChanged();
     QObject::disconnect(child.data(), &SubSurfaceInterface::positionChanged, 
q, &SurfaceInterface::subSurfaceTreeChanged);
     if (!child->surface().isNull()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.69.0/src/server/surface_interface.h 
new/kwayland-5.70.0/src/server/surface_interface.h
--- old/kwayland-5.69.0/src/server/surface_interface.h  2020-04-05 
00:38:02.000000000 +0200
+++ new/kwayland-5.70.0/src/server/surface_interface.h  2020-05-03 
00:00:58.000000000 +0200
@@ -330,6 +330,16 @@
      * @since 5.22
      **/
     void subSurfaceTreeChanged();
+    /**
+     * Emitted whenever a new child sub-surface @p subSurface is added.
+     * @since 5.70
+     */
+    void childSubSurfaceAdded(SubSurfaceInterface *subSurface);
+    /**
+     * Emitted whenver the child sub-surface @p subSurface is removed.
+     * @since 5.70
+     */
+    void childSubSurfaceRemoved(SubSurfaceInterface *subSurface);
 
     /**
      * Emitted whenever a pointer constraint get (un)installed on this 
SurfaceInterface.


Reply via email to