Hello community,

here is the log from the commit of package kwayland for openSUSE:Factory 
checked in at 2019-02-14 14:28:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwayland (Old)
 and      /work/SRC/openSUSE:Factory/.kwayland.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwayland"

Thu Feb 14 14:28:26 2019 rev:58 rq:674270 version:5.55.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kwayland/kwayland.changes        2019-01-21 
10:22:39.229928942 +0100
+++ /work/SRC/openSUSE:Factory/.kwayland.new.28833/kwayland.changes     
2019-02-14 14:28:27.467787812 +0100
@@ -1,0 +2,17 @@
+Sun Feb 10 22:03:18 UTC 2019 - [email protected]
+
+- Update to 5.55.0
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/kde-frameworks-5.55.0.php
+- Changes since 5.54.0:
+  * [server] Generate correct touch ids
+  * [autotests] Stabilize testWindowmanagement
+  * Make XdgTest spec compliant
+  * Add option to use wl_display_add_socket_auto
+  * [server] Send initial org_kde_plasma_virtual_desktop_management.rows
+  * Add rows info to the plasma virtual desktop protocol
+  * [client] Wrap wl_shell_surface_set_{class,title}
+  * Guard resource deletion in OuptutConfiguration::sendApplied
+
+-------------------------------------------------------------------

Old:
----
  kwayland-5.54.0.tar.xz

New:
----
  kwayland-5.55.0.tar.xz

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

Other differences:
------------------
++++++ kwayland.spec ++++++
--- /var/tmp/diff_new_pack.WU2VVB/_old  2019-02-14 14:28:27.955787586 +0100
+++ /var/tmp/diff_new_pack.WU2VVB/_new  2019-02-14 14:28:27.959787584 +0100
@@ -16,13 +16,13 @@
 #
 
 
-%define _tar_path 5.54
+%define _tar_path 5.55
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 Name:           kwayland
-Version:        5.54.0
+Version:        5.55.0
 Release:        0
 Summary:        KDE Wayland library
 License:        LGPL-2.1-or-later

++++++ kwayland-5.54.0.tar.xz -> kwayland-5.55.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/CMakeLists.txt 
new/kwayland-5.55.0/CMakeLists.txt
--- old/kwayland-5.54.0/CMakeLists.txt  2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/CMakeLists.txt  2019-02-02 18:24:11.000000000 +0100
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.5)
 
-set(KF5_VERSION "5.54.0") # handled by release scripts
+set(KF5_VERSION "5.55.0") # handled by release scripts
 project(KWayland VERSION ${KF5_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.54.0  NO_MODULE)
+find_package(ECM 5.55.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
@@ -30,7 +30,7 @@
                         SOVERSION 5)
 
 # Dependencies
-set(REQUIRED_QT_VERSION 5.9.0)
+set(REQUIRED_QT_VERSION 5.10.0)
 find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Concurrent Gui)
 
 find_package(Wayland 1.13 COMPONENTS Client Server)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/autotests/client/test_plasma_virtual_desktop.cpp 
new/kwayland-5.55.0/autotests/client/test_plasma_virtual_desktop.cpp
--- old/kwayland-5.54.0/autotests/client/test_plasma_virtual_desktop.cpp        
2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/autotests/client/test_plasma_virtual_desktop.cpp        
2019-02-02 18:24:11.000000000 +0100
@@ -46,6 +46,7 @@
     void cleanup();
 
     void testCreate();
+    void testSetRows();
     void testConnectNewClient();
     void testDestroy();
     void testActivate();
@@ -268,6 +269,18 @@
     }
 }
 
+void TestVirtualDesktop::testSetRows()
+{
+    //rebuild some desktops
+    testCreate();
+
+    QSignalSpy rowsChangedSpy(m_plasmaVirtualDesktopManagement, 
&PlasmaVirtualDesktopManagement::rowsChanged);
+
+    m_plasmaVirtualDesktopManagementInterface->setRows(3);
+    QVERIFY(rowsChangedSpy.wait());
+    QCOMPARE(m_plasmaVirtualDesktopManagement->rows(), 3);
+}
+
 void TestVirtualDesktop::testConnectNewClient()
 {
     //rebuild some desktops
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/autotests/client/test_wayland_shell.cpp 
new/kwayland-5.55.0/autotests/client/test_wayland_shell.cpp
--- old/kwayland-5.54.0/autotests/client/test_wayland_shell.cpp 2019-01-04 
22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/autotests/client/test_wayland_shell.cpp 2019-02-02 
18:24:11.000000000 +0100
@@ -606,7 +606,7 @@
     QString testTitle = QStringLiteral("fooBar");
     QVERIFY(serverSurface->title().isNull());
 
-    wl_shell_surface_set_title(*(const KWayland::Client::ShellSurface 
*)surface, testTitle.toUtf8().constData());
+    surface->setTitle(testTitle);
     QVERIFY(titleSpy.wait());
     QCOMPARE(serverSurface->title(), testTitle);
     QCOMPARE(titleSpy.first().first().toString(), testTitle);
@@ -631,13 +631,13 @@
     QByteArray testClass = QByteArrayLiteral("fooBar");
     QVERIFY(serverSurface->windowClass().isNull());
 
-    wl_shell_surface_set_class(*surface, testClass.constData());
+    surface->setWindowClass(testClass);
     QVERIFY(windowClassSpy.wait());
     QCOMPARE(serverSurface->windowClass(), testClass);
     QCOMPARE(windowClassSpy.first().first().toByteArray(), testClass);
 
     // try setting it to same should not trigger the signal
-    wl_shell_surface_set_class(*surface, testClass.constData());
+    surface->setWindowClass(testClass);
     QVERIFY(!windowClassSpy.wait(100));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/autotests/client/test_wayland_windowmanagement.cpp 
new/kwayland-5.55.0/autotests/client/test_wayland_windowmanagement.cpp
--- old/kwayland-5.54.0/autotests/client/test_wayland_windowmanagement.cpp      
2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/autotests/client/test_wayland_windowmanagement.cpp      
2019-02-02 18:24:11.000000000 +0100
@@ -597,17 +597,21 @@
 void TestWindowManagement::testIcon()
 {
     using namespace KWayland::Client;
-    QVERIFY(m_window);
+
+    // initially, the server should send us an icon
     QSignalSpy iconChangedSpy(m_window, &PlasmaWindow::iconChanged);
     QVERIFY(iconChangedSpy.isValid());
-    m_windowInterface->setIcon(QIcon());
-    // first goes from themed name to empty
     QVERIFY(iconChangedSpy.wait());
+    QCOMPARE(iconChangedSpy.count(), 1);
     if (!QIcon::hasThemeIcon(QStringLiteral("wayland"))) {
         QEXPECT_FAIL("", "no icon", Continue);
     }
     QCOMPARE(m_window->icon().name(), QStringLiteral("wayland"));
+
+    // first goes from themed name to empty
+    m_windowInterface->setIcon(QIcon());
     QVERIFY(iconChangedSpy.wait());
+    QCOMPARE(iconChangedSpy.count(), 2);
     if (!QIcon::hasThemeIcon(QStringLiteral("wayland"))) {
         QEXPECT_FAIL("", "no icon", Continue);
     }
@@ -618,11 +622,13 @@
     p.fill(Qt::red);
     m_windowInterface->setIcon(p);
     QVERIFY(iconChangedSpy.wait());
+    QCOMPARE(iconChangedSpy.count(), 3);
     QCOMPARE(m_window->icon().pixmap(32, 32), p);
 
     // let's set a themed icon
     m_windowInterface->setIcon(QIcon::fromTheme(QStringLiteral("xorg")));
     QVERIFY(iconChangedSpy.wait());
+    QCOMPARE(iconChangedSpy.count(), 4);
     if (!QIcon::hasThemeIcon(QStringLiteral("xorg"))) {
         QEXPECT_FAIL("", "no icon", Continue);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/autotests/server/test_display.cpp 
new/kwayland-5.55.0/autotests/server/test_display.cpp
--- old/kwayland-5.54.0/autotests/server/test_display.cpp       2019-01-04 
22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/autotests/server/test_display.cpp       2019-02-02 
18:24:11.000000000 +0100
@@ -43,6 +43,7 @@
     void testClientConnection();
     void testConnectNoSocket();
     void testOutputManagement();
+    void testAutoSocketName();
 };
 
 void TestWaylandServerDisplay::testSocketName()
@@ -215,6 +216,29 @@
     QVERIFY(kwin->isValid());
 }
 
+void TestWaylandServerDisplay::testAutoSocketName()
+{
+    QTemporaryDir runtimeDir;
+    QVERIFY(runtimeDir.isValid());
+    QVERIFY(qputenv("XDG_RUNTIME_DIR", runtimeDir.path().toUtf8()));
+
+    Display display0;
+    display0.setAutomaticSocketNaming(true);
+    QSignalSpy socketNameChangedSpy0(&display0, 
SIGNAL(socketNameChanged(QString)));
+    display0.start();
+    QVERIFY(display0.isRunning());
+    QCOMPARE(socketNameChangedSpy0.count(), 0);
+    QCOMPARE(display0.socketName(), QStringLiteral("wayland-0"));
+
+    Display display1;
+    display1.setAutomaticSocketNaming(true);
+    QSignalSpy socketNameChangedSpy1(&display1, 
SIGNAL(socketNameChanged(QString)));
+    display1.start();
+    QVERIFY(display1.isRunning());
+    QCOMPARE(socketNameChangedSpy1.count(), 1);
+    QCOMPARE(display1.socketName(), QStringLiteral("wayland-1"));
+}
+
 
 QTEST_GUILESS_MAIN(TestWaylandServerDisplay)
 #include "test_display.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/client/plasmavirtualdesktop.cpp 
new/kwayland-5.55.0/src/client/plasmavirtualdesktop.cpp
--- old/kwayland-5.54.0/src/client/plasmavirtualdesktop.cpp     2019-01-04 
22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/client/plasmavirtualdesktop.cpp     2019-02-02 
18:24:11.000000000 +0100
@@ -41,6 +41,7 @@
     WaylandPointer<org_kde_plasma_virtual_desktop_management, 
org_kde_plasma_virtual_desktop_management_destroy> 
plasmavirtualdesktopmanagement;
     EventQueue *queue = nullptr;
 
+    quint32 rows = 1;
     QList<PlasmaVirtualDesktop *> desktops;
 
     inline QList<PlasmaVirtualDesktop*>::const_iterator constFindDesktop(const 
QString &id);
@@ -49,6 +50,7 @@
 private:
     static void createdCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management, const char *id, uint32_t position);
     static void removedCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management, const char *id);
+    static void rowsCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management, uint32_t rows);
     static void doneCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management);
 
     PlasmaVirtualDesktopManagement *q;
@@ -103,7 +105,8 @@
 const org_kde_plasma_virtual_desktop_management_listener 
PlasmaVirtualDesktopManagement::Private::s_listener = {
     createdCallback,
     removedCallback,
-    doneCallback
+    doneCallback,
+    rowsCallback
 };
 
 void PlasmaVirtualDesktopManagement::Private::createdCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management, const char *id, uint32_t position)
@@ -136,6 +139,17 @@
     emit p->q->desktopRemoved(stringId);
 }
 
+void PlasmaVirtualDesktopManagement::Private::rowsCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management, uint32_t rows)
+{
+    auto p = reinterpret_cast<PlasmaVirtualDesktopManagement::Private*>(data);
+    Q_ASSERT(p->plasmavirtualdesktopmanagement == 
org_kde_plasma_virtual_desktop_management);
+    if (rows == 0) {
+        return;
+    }
+    p->rows = rows;
+    emit p->q->rowsChanged(rows);
+}
+
 void PlasmaVirtualDesktopManagement::Private::doneCallback(void *data, 
org_kde_plasma_virtual_desktop_management 
*org_kde_plasma_virtual_desktop_management)
 {
     auto p = reinterpret_cast<PlasmaVirtualDesktopManagement::Private*>(data);
@@ -253,6 +267,11 @@
     return d->desktops;
 }
 
+quint32 PlasmaVirtualDesktopManagement::rows() const
+{
+    return d->rows;
+}
+
 const org_kde_plasma_virtual_desktop_listener 
PlasmaVirtualDesktop::Private::s_listener = {
     idCallback,
     nameCallback,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/client/plasmavirtualdesktop.h 
new/kwayland-5.55.0/src/client/plasmavirtualdesktop.h
--- old/kwayland-5.54.0/src/client/plasmavirtualdesktop.h       2019-01-04 
22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/client/plasmavirtualdesktop.h       2019-02-02 
18:24:11.000000000 +0100
@@ -143,6 +143,12 @@
      */
     QList <PlasmaVirtualDesktop *> desktops() const;
 
+    /**
+     * @returns How many rows the virtual desktops should be laid out into
+     * @since 5.55
+     */
+    quint32 rows() const;
+
     operator org_kde_plasma_virtual_desktop_management*();
     operator org_kde_plasma_virtual_desktop_management*() const;
 
@@ -160,6 +166,12 @@
     void desktopRemoved(const QString &id);
 
     /**
+     * Emitted when the number of rows of virtual desktops has been changed by 
the server
+     * @since 5.55
+     */
+    void rowsChanged(quint32 rows);
+
+    /**
      * This event is sent after all other properties has been
      * sent after binding to the desktop manager object and after any
      * other property changes done after that. This allows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/src/client/protocols/plasma-virtual-desktop.xml 
new/kwayland-5.55.0/src/client/protocols/plasma-virtual-desktop.xml
--- old/kwayland-5.54.0/src/client/protocols/plasma-virtual-desktop.xml 
2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/client/protocols/plasma-virtual-desktop.xml 
2019-02-02 18:24:11.000000000 +0100
@@ -17,7 +17,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
   ]]></copyright>
 
-<interface name="org_kde_plasma_virtual_desktop_management" version="1">
+<interface name="org_kde_plasma_virtual_desktop_management" version="2">
     <request name="get_virtual_desktop">
         <description summary="get the org_kde_plasma_virtual_desktop interface 
for a desktop">
             Given the id of a particular virtual desktop, get the 
corresponding org_kde_plasma_virtual_desktop which represents only the desktop 
with that id;
@@ -62,6 +62,10 @@
             atomic, even if they happen via multiple events.
         </description>
     </event>
+
+    <event name="rows" since="2">
+        <arg name="rows" type="uint" summary="Number of rows the virtual 
desktops are laid out into."/>
+    </event>
 </interface>
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/client/registry.cpp 
new/kwayland-5.55.0/src/client/registry.cpp
--- old/kwayland-5.54.0/src/client/registry.cpp 2019-01-04 22:44:52.000000000 
+0100
+++ new/kwayland-5.55.0/src/client/registry.cpp 2019-02-02 18:24:11.000000000 
+0100
@@ -176,7 +176,7 @@
         &Registry::plasmaShellRemoved
     }},
     {Registry::Interface::PlasmaVirtualDesktopManagement, {
-        1,
+        2,
         QByteArrayLiteral("org_kde_plasma_virtual_desktop_management"),
         &org_kde_plasma_virtual_desktop_management_interface,
         &Registry::plasmaVirtualDesktopManagementAnnounced,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/client/shell.cpp 
new/kwayland-5.55.0/src/client/shell.cpp
--- old/kwayland-5.54.0/src/client/shell.cpp    2019-01-04 22:44:52.000000000 
+0100
+++ new/kwayland-5.55.0/src/client/shell.cpp    2019-02-02 18:24:11.000000000 
+0100
@@ -363,6 +363,16 @@
     wl_shell_surface_resize(d->surface, *seat, serial, wlEdge);
 }
 
+void ShellSurface::setTitle(const QString &title)
+{
+    wl_shell_surface_set_title(d->surface, title.toUtf8().constData());
+}
+
+void ShellSurface::setWindowClass(const QByteArray &windowClass)
+{
+    wl_shell_surface_set_class(d->surface, windowClass.constData());
+}
+
 QSize ShellSurface::size() const
 {
     return d->size;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/client/shell.h 
new/kwayland-5.55.0/src/client/shell.h
--- old/kwayland-5.54.0/src/client/shell.h      2019-01-04 22:44:52.000000000 
+0100
+++ new/kwayland-5.55.0/src/client/shell.h      2019-02-02 18:24:11.000000000 
+0100
@@ -289,6 +289,27 @@
     void requestResize(Seat *seat, quint32 serial, Qt::Edges edges);
 
     /**
+     * Sets a short title for the surface.
+     *
+     * This string may be used to identify the surface in a task bar, window 
list, or other user
+     * interface elements provided by the compositor.
+     *
+     * @since 5.55
+     **/
+    void setTitle(const QString &title);
+
+    /**
+     * Sets a window class for the surface.
+     *
+     * The surface class identifies the general class of applications to which 
the surface belongs.
+     * A common convention is to use the file name (or the full path if it is 
a non-standard location)
+     * of the application's .desktop file as the class.
+     *
+     * @since 5.55
+     **/
+    void setWindowClass(const QByteArray &windowClass);
+
+    /**
      * Creates a ShellSurface for the given @p window.
      * This is an integration feature for QtWayland. On non-wayland platforms 
this method returns
      * @c nullptr as well as for not created QWindows.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/server/display.cpp 
new/kwayland-5.55.0/src/server/display.cpp
--- old/kwayland-5.54.0/src/server/display.cpp  2019-01-04 22:44:52.000000000 
+0100
+++ new/kwayland-5.55.0/src/server/display.cpp  2019-02-02 18:24:11.000000000 
+0100
@@ -84,6 +84,7 @@
     wl_event_loop *loop = nullptr;
     QString socketName = QStringLiteral("wayland-0");
     bool running = false;
+    bool automaticSocketNaming = false;
     QList<OutputInterface*> outputs;
     QList<OutputDeviceInterface*> outputdevices;
     QVector<SeatInterface*> seats;
@@ -161,13 +162,39 @@
     return d->socketName;
 }
 
+void Display::setAutomaticSocketNaming(bool automaticSocketNaming)
+{
+    if (d->automaticSocketNaming == automaticSocketNaming) {
+        return;
+    }
+    d->automaticSocketNaming = automaticSocketNaming;
+    emit automaticSocketNamingChanged(automaticSocketNaming);
+}
+
+bool Display::automaticSocketNaming() const
+{
+    return d->automaticSocketNaming;
+}
+
 void Display::start(StartMode mode)
 {
     Q_ASSERT(!d->running);
     Q_ASSERT(!d->display);
     d->display = wl_display_create();
     if (mode == StartMode::ConnectToSocket) {
-        if (wl_display_add_socket(d->display, qPrintable(d->socketName)) != 0) 
{
+        if (d->automaticSocketNaming) {
+            const char *socket = wl_display_add_socket_auto(d->display);
+            if (socket == nullptr) {
+                qCWarning(KWAYLAND_SERVER) << "Failed to create Wayland 
socket";
+                return;
+            }
+
+            const QString newEffectiveSocketName = QString::fromUtf8(socket);
+            if (d->socketName != newEffectiveSocketName) {
+                d->socketName = newEffectiveSocketName;
+                emit socketNameChanged(d->socketName);
+            }
+        } else if (wl_display_add_socket(d->display, 
qPrintable(d->socketName)) != 0) {
             qCWarning(KWAYLAND_SERVER) << "Failed to create Wayland socket";
             return;
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/server/display.h 
new/kwayland-5.55.0/src/server/display.h
--- old/kwayland-5.54.0/src/server/display.h    2019-01-04 22:44:52.000000000 
+0100
+++ new/kwayland-5.55.0/src/server/display.h    2019-02-02 18:24:11.000000000 
+0100
@@ -100,14 +100,28 @@
 {
     Q_OBJECT
     Q_PROPERTY(QString socketName READ socketName WRITE setSocketName NOTIFY 
socketNameChanged)
+    Q_PROPERTY(bool automaticSocketNaming READ automaticSocketNaming WRITE 
setAutomaticSocketNaming NOTIFY automaticSocketNamingChanged)
     Q_PROPERTY(bool running READ isRunning NOTIFY runningChanged)
 public:
     explicit Display(QObject *parent = nullptr);
     virtual ~Display();
 
+    /**
+     * Sets the basename of the socket to @p name. If @p name is empty, it 
will use
+     * wl_display_add_socket_auto to get a free socket with a filename 
"wayland-%d".
+     **/
     void setSocketName(const QString &name);
     QString socketName() const;
 
+    /**
+     * If automaticSocketNaming is true, the manually set socketName is ignored
+     * and it will use wl_display_add_socket_auto on start to get a free 
socket with
+     * a filename "wayland-%d" instead. The effective socket is written into 
socketName.
+     * @since 5.55
+     **/
+    void setAutomaticSocketNaming(bool automaticSocketNaming);
+    bool automaticSocketNaming() const;
+
     quint32 serial();
     quint32 nextSerial();
 
@@ -316,6 +330,7 @@
 
 Q_SIGNALS:
     void socketNameChanged(const QString&);
+    void automaticSocketNamingChanged(bool);
     void runningChanged(bool);
     void aboutToTerminate();
     void clientConnected(KWayland::Server::ClientConnection*);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/src/server/outputconfiguration_interface.cpp 
new/kwayland-5.55.0/src/server/outputconfiguration_interface.cpp
--- old/kwayland-5.54.0/src/server/outputconfiguration_interface.cpp    
2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/server/outputconfiguration_interface.cpp    
2019-02-02 18:24:11.000000000 +0100
@@ -287,6 +287,9 @@
 
 void OutputConfigurationInterface::Private::sendApplied()
 {
+    if (!resource) {
+        return;
+    }
     org_kde_kwin_outputconfiguration_send_applied(resource);
 }
 
@@ -299,6 +302,9 @@
 
 void OutputConfigurationInterface::Private::sendFailed()
 {
+    if (!resource) {
+        return;
+    }
     org_kde_kwin_outputconfiguration_send_failed(resource);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.cpp 
new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.cpp
--- old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.cpp   
2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.cpp   
2019-02-02 18:24:11.000000000 +0100
@@ -91,7 +91,7 @@
     static const quint32 s_version;
 };
 
-const quint32 PlasmaVirtualDesktopManagementInterface::Private::s_version = 1;
+const quint32 PlasmaVirtualDesktopManagementInterface::Private::s_version = 2;
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 const struct org_kde_plasma_virtual_desktop_management_interface 
PlasmaVirtualDesktopManagementInterface::Private::s_interface = {
@@ -165,6 +165,11 @@
     for (auto it = desktops.constBegin(); it != desktops.constEnd(); ++it) {
         
org_kde_plasma_virtual_desktop_management_send_desktop_created(resource, 
(*it)->id().toUtf8().constData(), i++);
     }
+
+    if (wl_resource_get_version(resource) >= 
ORG_KDE_PLASMA_VIRTUAL_DESKTOP_MANAGEMENT_ROWS_SINCE_VERSION) {
+        org_kde_plasma_virtual_desktop_management_send_rows(resource, rows);
+    }
+
     org_kde_plasma_virtual_desktop_management_send_done(resource);
 }
 
@@ -190,6 +195,24 @@
     return reinterpret_cast<Private*>(d.data());
 }
 
+void PlasmaVirtualDesktopManagementInterface::setRows(quint32 rows)
+{
+    Q_D();
+
+    if (rows == 0 || d->rows == rows) {
+        return;
+    }
+
+    d->rows = rows;
+
+    for (auto it = d->resources.constBegin(); it != d->resources.constEnd(); 
++it) {
+        if (wl_resource_get_version(*it) < 
ORG_KDE_PLASMA_VIRTUAL_DESKTOP_MANAGEMENT_ROWS_SINCE_VERSION) {
+            continue;
+        }
+        org_kde_plasma_virtual_desktop_management_send_rows(*it, rows);
+    }
+}
+
 PlasmaVirtualDesktopInterface 
*PlasmaVirtualDesktopManagementInterface::desktop(const QString &id)
 {
     Q_D();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.h 
new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.h
--- old/kwayland-5.54.0/src/server/plasmavirtualdesktop_interface.h     
2019-01-04 22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/server/plasmavirtualdesktop_interface.h     
2019-02-02 18:24:11.000000000 +0100
@@ -46,9 +46,10 @@
     virtual ~PlasmaVirtualDesktopManagementInterface();
 
     /**
-     * Sets a new layout for this desktop grid.
+     * Sets how many rows the virtual desktops should be laid into
+     * @since 5.55
      */
-    void setLayout(quint32 rows, quint32 columns);
+    void setRows(quint32 rows);
 
     /**
      * @returns A desktop identified uniquely by this id.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/src/server/seat_interface.cpp 
new/kwayland-5.55.0/src/server/seat_interface.cpp
--- old/kwayland-5.54.0/src/server/seat_interface.cpp   2019-01-04 
22:44:52.000000000 +0100
+++ new/kwayland-5.55.0/src/server/seat_interface.cpp   2019-02-02 
18:24:11.000000000 +0100
@@ -1346,7 +1346,7 @@
 qint32 SeatInterface::touchDown(const QPointF &globalPosition)
 {
     Q_D();
-    const qint32 id = d->globalTouch.ids.isEmpty() ? 0 : 
d->globalTouch.ids.last() + 1;
+    const qint32 id = d->globalTouch.ids.isEmpty() ? 0 : 
d->globalTouch.ids.lastKey() + 1;
     const qint32 serial = display()->nextSerial();
     const auto pos = globalPosition - d->globalTouch.focus.offset;
     for (auto it = d->globalTouch.focus.touchs.constBegin(), end = 
d->globalTouch.focus.touchs.constEnd(); it != end; ++it) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-5.54.0/tests/xdgtest.cpp 
new/kwayland-5.55.0/tests/xdgtest.cpp
--- old/kwayland-5.54.0/tests/xdgtest.cpp       2019-01-04 22:44:52.000000000 
+0100
+++ new/kwayland-5.55.0/tests/xdgtest.cpp       2019-02-02 18:24:11.000000000 
+0100
@@ -121,8 +121,16 @@
             Q_ASSERT(m_surface);
             m_xdgShellSurface = m_xdgShell->createSurface(m_surface, this);
             Q_ASSERT(m_xdgShellSurface);
-            connect(m_xdgShellSurface, &XdgShellSurface::sizeChanged, this, 
&XdgTest::render);
-            render();
+            connect(m_xdgShellSurface, &XdgShellSurface::configureRequested, 
this, [this](const QSize &size, KWayland::Client::XdgShellSurface::States 
states, int serial) {
+                Q_UNUSED(size);
+                Q_UNUSED(states);
+                m_xdgShellSurface->ackConfigure(serial);
+                render();
+            });
+
+            m_xdgShellSurface->setTitle(QStringLiteral("Test Window"));
+
+            m_surface->commit();
         }
     );
     connect(registry, &Registry::seatAnnounced, this,


Reply via email to