git » qt5-wayland.git » commit b8a650b

Qt 5.9.0

author Antonio Rojas
2017-05-31 16:16:33 UTC
committer Antonio Rojas
2017-05-31 16:16:33 UTC
parent 5de12b3820fcde55f64e00c07e8b78f9081fa1eb

Qt 5.9.0

PKGBUILD +4 -10
revert-5b807802.patch +0 -542

diff --git a/PKGBUILD b/PKGBUILD
index 64625eb..da14547 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,9 +3,9 @@
 # Contributor: Andrea Scarpino <andrea@archlinux.org>
 
 pkgname=qt5-wayland
-_qtver=5.8.0
+_qtver=5.9.0
 pkgver=${_qtver/-/}
-pkgrel=2
+pkgrel=1
 arch=('i686' 'x86_64')
 url='http://qt-project.org/'
 license=('GPL3' 'LGPL3' 'FDL' 'custom')
@@ -13,17 +13,11 @@ pkgdesc='Provides APIs for Wayland'
 depends=('qt5-declarative' 'libxcomposite' 'wayland') # namcap note: wayland is needed for nvidia-libgl users
 groups=('qt' 'qt5')
 _pkgfqn="${pkgname/5-/}-opensource-src-${_qtver}"
-source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz"
-        revert-5b807802.patch)
-md5sums=('0a40bd721bd5e1630601beab660c6ea9'
-         '95e986e9c0ab5ebe03c85efb69ee751a')
+source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz")
+sha256sums=('9b802bb6f5237a21fc1ffe0877c75a90b94a6207d03006b94ca697c072a79d7e')
 
 prepare() {
   mkdir -p build
-
-# Revert commit that breaks Plasma Wayland
-  cd ${_pkgfqn}
-  patch -Rp1 -i ../revert-5b807802.patch
 }
 
 build() {
diff --git a/revert-5b807802.patch b/revert-5b807802.patch
deleted file mode 100644
index b866553..0000000
--- a/revert-5b807802.patch
+++ /dev/null
@@ -1,542 +0,0 @@
-From 5b807802866c8df00cb3340d4f9bcc343be5973a Mon Sep 17 00:00:00 2001
-From: Giulio Camuffo <giulio.camuffo@kdab.com>
-Date: Sat, 2 Jul 2016 10:46:58 +0200
-Subject: [PATCH] Create and destroy the shell surface when showing and hiding
-
-This changes the shell surface handling for windows, and instead of
-creating the shell surface at initialization time, and then attaching
-a null buffer to hide it, it creates the shell surface on setVisible(true),
-and destroys it on setVisible(false).
-This fixes hiding when using xdg_shell, as that interface defines that
-attaching a null buffer to an xdg_surface is an error.
-Also this should help with bugged EGL drivers which attach a buffer
-after eglSwapBuffers() returns, which used to cause a newly hidden
-window to get a new valid buffer after we attached a null one, showing
-it again.
-
-Task-number: QTBUG-47902
-Change-Id: I8e0a0442319a98cc1361803ea7be1d079b36fc8c
-Reviewed-by: Johan Helsing <johan.helsing@qt.io>
-Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
----
- src/client/qwaylandshellsurface_p.h                |  5 +-
- src/client/qwaylandshmbackingstore.cpp             |  8 +-
- src/client/qwaylandwindow.cpp                      | 90 +++++++++++-----------
- src/client/qwaylandwindow_p.h                      |  2 +
- src/client/qwaylandwlshellsurface.cpp              | 10 +++
- src/client/qwaylandwlshellsurface_p.h              |  6 +-
- src/client/qwaylandxdgpopup.cpp                    |  6 ++
- src/client/qwaylandxdgpopup_p.h                    |  2 +
- src/client/qwaylandxdgsurface.cpp                  | 19 ++---
- src/client/qwaylandxdgsurface_p.h                  |  5 +-
- .../client/wayland-egl/qwaylandeglwindow.cpp       | 10 +++
- .../client/wayland-egl/qwaylandeglwindow.h         |  4 +
- .../qwaylandxcompositeeglcontext.cpp               |  4 +-
- .../qwaylandxcompositeglxcontext.cpp               |  4 +-
- .../ivi-shell/qwaylandivisurface.cpp               |  7 ++
- .../ivi-shell/qwaylandivisurface_p.h               |  2 +
- tests/auto/client/client/tst_client.cpp            |  4 +-
- 17 files changed, 110 insertions(+), 78 deletions(-)
-
-diff --git a/src/client/qwaylandshellsurface_p.h b/src/client/qwaylandshellsurface_p.h
-index 63b77ab..b51c252 100644
---- a/src/client/qwaylandshellsurface_p.h
-+++ b/src/client/qwaylandshellsurface_p.h
-@@ -94,15 +94,14 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface : public QObject
- 
-     inline QWaylandWindow *window() { return m_window; }
- 
-+    virtual void setType(Qt::WindowType type, QWaylandWindow *transientParent) = 0;
-+
- protected:
-     virtual void setMaximized() {}
-     virtual void setFullscreen() {}
-     virtual void setNormal() {}
-     virtual void setMinimized() {}
- 
--    virtual void setTopLevel() {}
--    virtual void updateTransientParent(QWindow * /*parent*/) {}
--
- private:
-     QWaylandWindow *m_window;
-     friend class QWaylandWindow;
-diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
-index 5f8336c..d0d6cfd 100644
---- a/src/client/qwaylandshmbackingstore.cpp
-+++ b/src/client/qwaylandshmbackingstore.cpp
-@@ -211,13 +211,7 @@ void QWaylandShmBackingStore::flush(QWindow *window, const QRegion &region, cons
- 
-     QMargins margins = windowDecorationMargins();
- 
--    waylandWindow()->attachOffset(mFrontBuffer);
--    mFrontBuffer->setBusy();
--
--    QVector<QRect> rects = region.rects();
--    foreach (const QRect &rect, rects)
--        waylandWindow()->damage(rect.translated(margins.left(), margins.top()));
--    waylandWindow()->commit();
-+    waylandWindow()->commit(mFrontBuffer, region.translated(margins.left(), margins.top()));
- }
- 
- void QWaylandShmBackingStore::resize(const QSize &size, const QRegion &)
-diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
-index 6c3647d..1ff6686 100644
---- a/src/client/qwaylandwindow.cpp
-+++ b/src/client/qwaylandwindow.cpp
-@@ -96,8 +96,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
- {
-     static WId id = 1;
-     mWindowId = id++;
--    if (window->type() != Qt::Desktop)
--        initWindow();
- }
- 
- QWaylandWindow::~QWaylandWindow()
-@@ -126,18 +124,28 @@ QWaylandWindow::~QWaylandWindow()
- 
- void QWaylandWindow::initWindow()
- {
--    init(mDisplay->createSurface(static_cast<QtWayland::wl_surface *>(this)));
-+    if (window()->type() == Qt::Desktop)
-+        return;
-+
-+    if (!isInitialized())
-+        init(mDisplay->createSurface(static_cast<QtWayland::wl_surface *>(this)));
- 
-     if (shouldCreateSubSurface()) {
-+        Q_ASSERT(!mSubSurfaceWindow);
-+
-         QWaylandWindow *p = static_cast<QWaylandWindow *>(QPlatformWindow::parent());
-         if (::wl_subsurface *ss = mDisplay->createSubSurface(this, p)) {
-             mSubSurfaceWindow = new QWaylandSubSurface(this, p, ss);
-         }
-     } else if (shouldCreateShellSurface()) {
-+        Q_ASSERT(!mShellSurface);
-+
-         mShellSurface = mDisplay->createShellSurface(this);
--    }
-+        if (!mShellSurface)
-+            qFatal("Could not create a shell surface object.");
-+
-+        mShellSurface->setType(window()->type(), transientParent());
- 
--    if (mShellSurface) {
-         // Set initial surface title
-         setWindowTitle(window()->title());
- 
-@@ -171,17 +179,6 @@ void QWaylandWindow::initWindow()
-         }
-     }
- 
--    if (mShellSurface) {
--        if (window()->transientParent()) {
--            if (window()->type() != Qt::Popup) {
--                mShellSurface->updateTransientParent(window()->transientParent());
--            }
--        } else {
--            if (window()->type() != Qt::ToolTip)
--                mShellSurface->setTopLevel();
--        }
--    }
--
-     // Enable high-dpi rendering. Scale() returns the screen scale factor and will
-     // typically be integer 1 (normal-dpi) or 2 (high-dpi). Call set_buffer_scale()
-     // to inform the compositor that high-resolution buffers will be provided.
-@@ -244,6 +241,9 @@ WId QWaylandWindow::winId() const
- 
- void QWaylandWindow::setParent(const QPlatformWindow *parent)
- {
-+    if (!window()->isVisible())
-+        return;
-+
-     QWaylandWindow *oldparent = mSubSurfaceWindow ? mSubSurfaceWindow->parent() : 0;
-     if (oldparent == parent)
-         return;
-@@ -287,8 +287,7 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect)
-         QMargins m = QPlatformWindow::parent()->frameMargins();
-         mSubSurfaceWindow->set_position(rect.x() + m.left(), rect.y() + m.top());
-         mSubSurfaceWindow->parent()->window()->requestUpdate();
--    } else if (shellSurface() && window()->transientParent() && window()->type() != Qt::Popup)
--        shellSurface()->updateTransientParent(window()->transientParent());
-+    }
- }
- 
- void QWaylandWindow::setGeometry(const QRect &rect)
-@@ -313,20 +312,8 @@ void QWaylandWindow::setGeometry(const QRect &rect)
- void QWaylandWindow::setVisible(bool visible)
- {
-     if (visible) {
--        if (mShellSurface) {
--            if (window()->type() == Qt::Popup) {
--                QWaylandWindow *parent = transientParent();
--                if (parent) {
--                    QWaylandWlShellSurface *wlshellSurface = qobject_cast<QWaylandWlShellSurface*>(mShellSurface);
--                    if (wlshellSurface)
--                        wlshellSurface->setPopup(parent, mDisplay->lastInputDevice(), mDisplay->lastInputSerial());
--                }
--            } else if (window()->type() == Qt::ToolTip) {
--                if (QWaylandWindow *parent = transientParent()) {
--                    mShellSurface->updateTransientParent(parent->window());
--                }
--            }
--        }
-+        initWindow();
-+        mDisplay->flushRequests();
- 
-         setGeometry(window()->geometry());
-         // Don't flush the events here, or else the newly visible window may start drawing, but since
-@@ -338,10 +325,8 @@ void QWaylandWindow::setVisible(bool visible)
-         // case 'this' will be deleted. When that happens, we must abort right away.
-         QPointer<QWaylandWindow> deleteGuard(this);
-         QWindowSystemInterface::flushWindowSystemEvents();
--        if (!deleteGuard.isNull()) {
--            attach(static_cast<QWaylandBuffer *>(0), 0, 0);
--            commit();
--        }
-+        if (!deleteGuard.isNull())
-+            reset();
-     }
- }
- 
-@@ -374,7 +359,7 @@ void QWaylandWindow::setMask(const QRegion &mask)
-         wl_region_destroy(region);
-     }
- 
--    commit();
-+    wl_surface::commit();
- }
- 
- void QWaylandWindow::configure(uint32_t edges, int32_t width, int32_t height)
-@@ -461,6 +446,7 @@ void QWaylandWindow::attach(QWaylandBuffer *buffer, int x, int y)
-         wl_callback_add_listener(callback, &QWaylandWindow::callbackListener, this);
-         mFrameCallback = callback;
-         mWaitingForFrameSync = true;
-+        buffer->setBusy();
- 
-         attach(buffer->buffer(), x, y);
-     } else {
-@@ -479,6 +465,18 @@ void QWaylandWindow::damage(const QRect &rect)
-     damage(rect.x(), rect.y(), rect.width(), rect.height());
- }
- 
-+void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage)
-+{
-+    if (!isInitialized())
-+        return;
-+
-+    attachOffset(buffer);
-+    const QVector<QRect> rects = damage.rects();
-+    for (const QRect &rect: rects)
-+        wl_surface::damage(rect.x(), rect.y(), rect.width(), rect.height());
-+    wl_surface::commit();
-+}
-+
- const wl_callback_listener QWaylandWindow::callbackListener = {
-     QWaylandWindow::frameCallback
- };
-@@ -555,7 +553,7 @@ void QWaylandWindow::handleContentOrientationChange(Qt::ScreenOrientation orient
-     }
-     set_buffer_transform(transform);
-     // set_buffer_transform is double buffered, we need to commit.
--    commit();
-+    wl_surface::commit();
- }
- 
- void QWaylandWindow::setOrientationMask(Qt::ScreenOrientations mask)
-@@ -681,15 +679,13 @@ static QWindow *topLevelWindow(QWindow *window)
- 
- QWaylandWindow *QWaylandWindow::transientParent() const
- {
--    if (window()->transientParent()) {
--        // Take the top level window here, since the transient parent may be a QWidgetWindow
--        // or some other window without a shell surface, which is then not able to get mouse
--        // events.
--        return static_cast<QWaylandWindow *>(topLevelWindow(window()->transientParent())->handle());
--    }
--    // Try with the current focus window. It should be the right one and anyway
--    // better than having no parent at all.
--    return mDisplay->lastInputWindow();
-+    // Take the top level window here, since the transient parent may be a QWidgetWindow
-+    // or some other window without a shell surface, which is then not able to get mouse
-+    // events.
-+    if (auto transientParent = window()->transientParent())
-+        return static_cast<QWaylandWindow *>(topLevelWindow(transientParent)->handle());
-+
-+    return nullptr;
- }
- 
- void QWaylandWindow::handleMouse(QWaylandInputDevice *inputDevice, const QWaylandPointerEvent &e)
-diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
-index 442fe9a..7e7078f 100644
---- a/src/client/qwaylandwindow_p.h
-+++ b/src/client/qwaylandwindow_p.h
-@@ -132,6 +132,8 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandWindow : public QObject, public QPlatformW
-     using QtWayland::wl_surface::damage;
-     void damage(const QRect &rect);
- 
-+    void commit(QWaylandBuffer *buffer, const QRegion &damage);
-+
-     void waitForFrameSync();
- 
-     QMargins frameMargins() const Q_DECL_OVERRIDE;
-diff --git a/src/client/qwaylandwlshellsurface.cpp b/src/client/qwaylandwlshellsurface.cpp
-index 3527015..77434e9 100644
---- a/src/client/qwaylandwlshellsurface.cpp
-+++ b/src/client/qwaylandwlshellsurface.cpp
-@@ -215,6 +215,16 @@ void QWaylandWlShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevic
-               transientPos.x(), transientPos.y(), 0);
- }
- 
-+void QWaylandWlShellSurface::setType(Qt::WindowType type, QWaylandWindow *transientParent)
-+{
-+    if (type == Qt::Popup && transientParent)
-+        setPopup(transientParent, m_window->display()->lastInputDevice(), m_window->display()->lastInputSerial());
-+    else if (transientParent)
-+        updateTransientParent(transientParent->window());
-+    else
-+        setTopLevel();
-+}
-+
- void QWaylandWlShellSurface::shell_surface_ping(uint32_t serial)
- {
-     pong(serial);
-diff --git a/src/client/qwaylandwlshellsurface_p.h b/src/client/qwaylandwlshellsurface_p.h
-index ef732ef..af86276 100644
---- a/src/client/qwaylandwlshellsurface_p.h
-+++ b/src/client/qwaylandwlshellsurface_p.h
-@@ -92,14 +92,16 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandWlShellSurface : public QWaylandShellSurfa
-     void setWindowFlags(Qt::WindowFlags flags) Q_DECL_OVERRIDE;
-     void sendProperty(const QString &name, const QVariant &value) Q_DECL_OVERRIDE;
- 
-+    void setType(Qt::WindowType type, QWaylandWindow *transientParent) override;
-+
- private:
-     void setMaximized() Q_DECL_OVERRIDE;
-     void setFullscreen() Q_DECL_OVERRIDE;
-     void setNormal() Q_DECL_OVERRIDE;
-     void setMinimized() Q_DECL_OVERRIDE;
- 
--    void setTopLevel() Q_DECL_OVERRIDE;
--    void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE;
-+    void setTopLevel();
-+    void updateTransientParent(QWindow *parent);
-     void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial);
- 
-     QWaylandWindow *m_window;
-diff --git a/src/client/qwaylandxdgpopup.cpp b/src/client/qwaylandxdgpopup.cpp
-index abc2527..57800f1 100644
---- a/src/client/qwaylandxdgpopup.cpp
-+++ b/src/client/qwaylandxdgpopup.cpp
-@@ -56,6 +56,12 @@ QWaylandXdgPopup::~QWaylandXdgPopup()
-     delete m_extendedWindow;
- }
- 
-+void QWaylandXdgPopup::setType(Qt::WindowType type, QWaylandWindow *transientParent)
-+{
-+    Q_UNUSED(type);
-+    Q_UNUSED(transientParent);
-+}
-+
- void QWaylandXdgPopup::xdg_popup_popup_done()
- {
-     m_window->window()->close();
-diff --git a/src/client/qwaylandxdgpopup_p.h b/src/client/qwaylandxdgpopup_p.h
-index ff58041..64bb4d9 100644
---- a/src/client/qwaylandxdgpopup_p.h
-+++ b/src/client/qwaylandxdgpopup_p.h
-@@ -68,6 +68,8 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgPopup : public QWaylandShellSurface
-     QWaylandXdgPopup(struct ::xdg_popup *popup, QWaylandWindow *window);
-     virtual ~QWaylandXdgPopup();
- 
-+    void setType(Qt::WindowType type, QWaylandWindow *transientParent) override;
-+
- protected:
-     void xdg_popup_popup_done() override;
- 
-diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp
-index a3bbb06..fe8761e 100644
---- a/src/client/qwaylandxdgsurface.cpp
-+++ b/src/client/qwaylandxdgsurface.cpp
-@@ -128,17 +128,11 @@ void QWaylandXdgSurface::setMinimized()
-     set_minimized();
- }
- 
--void QWaylandXdgSurface::setTopLevel()
-+void QWaylandXdgSurface::updateTransientParent(QWaylandWindow *parent)
- {
--    // There's no xdg_shell_surface API for this, ignoring
--}
--
--void QWaylandXdgSurface::updateTransientParent(QWindow *parent)
--{
--    QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle());
--    if (!parent_wayland_window)
-+    if (!parent)
-         return;
--    auto parentXdgSurface = qobject_cast<QWaylandXdgSurface *>(parent_wayland_window->shellSurface());
-+    auto parentXdgSurface = qobject_cast<QWaylandXdgSurface *>(parent->shellSurface());
-     Q_ASSERT(parentXdgSurface);
-     set_parent(parentXdgSurface->object());
- }
-@@ -183,6 +177,13 @@ void QWaylandXdgSurface::sendProperty(const QString &name, const QVariant &value
-         m_extendedWindow->updateGenericProperty(name, value);
- }
- 
-+void QWaylandXdgSurface::setType(Qt::WindowType type, QWaylandWindow *transientParent)
-+{
-+    Q_UNUSED(type)
-+    if (transientParent)
-+        updateTransientParent(transientParent);
-+}
-+
- void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height, struct wl_array *states,uint32_t serial)
- {
-     uint32_t *state = reinterpret_cast<uint32_t*>(states->data);
-diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h
-index 1a5eeed..265d3ba 100644
---- a/src/client/qwaylandxdgsurface_p.h
-+++ b/src/client/qwaylandxdgsurface_p.h
-@@ -99,14 +99,15 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurface : public QWaylandShellSurface
-     bool isFullscreen() const { return m_fullscreen; }
-     bool isMaximized() const { return m_maximized; }
- 
-+    void setType(Qt::WindowType type, QWaylandWindow *transientParent) override;
-+
- private:
-     void setMaximized() Q_DECL_OVERRIDE;
-     void setFullscreen() Q_DECL_OVERRIDE;
-     void setNormal() Q_DECL_OVERRIDE;
-     void setMinimized() Q_DECL_OVERRIDE;
- 
--    void setTopLevel() Q_DECL_OVERRIDE;
--    void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE;
-+    void updateTransientParent(QWaylandWindow *parent);
- 
- private:
-     QWaylandWindow *m_window;
-diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
-index 236218e..6b5c532 100644
---- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
-+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
-@@ -159,6 +159,12 @@ void QWaylandEglWindow::setVisible(bool visible)
- {
-     QWaylandWindow::setVisible(visible);
-     if (!visible)
-+        QMetaObject::invokeMethod(this, "doInvalidateSurface", Qt::QueuedConnection);
-+}
-+
-+void QWaylandEglWindow::doInvalidateSurface()
-+{
-+    if (!window()->isVisible())
-         invalidateSurface();
- }
- 
-@@ -168,6 +174,10 @@ void QWaylandEglWindow::invalidateSurface()
-         eglDestroySurface(m_clientBufferIntegration->eglDisplay(), m_eglSurface);
-         m_eglSurface = 0;
-     }
-+    if (m_waylandEglWindow) {
-+        wl_egl_window_destroy(m_waylandEglWindow);
-+        m_waylandEglWindow = nullptr;
-+    }
- }
- 
- EGLSurface QWaylandEglWindow::eglSurface() const
-diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
-index 556ed68..bf65668 100644
---- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
-+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
-@@ -54,6 +54,7 @@ class QWaylandGLContext;
- 
- class QWaylandEglWindow : public QWaylandWindow
- {
-+    Q_OBJECT
- public:
-     QWaylandEglWindow(QWindow *window);
-     ~QWaylandEglWindow();
-@@ -75,6 +76,9 @@ class QWaylandEglWindow : public QWaylandWindow
-     void invalidateSurface() Q_DECL_OVERRIDE;
-     void setVisible(bool visible) Q_DECL_OVERRIDE;
- 
-+private Q_SLOTS:
-+    void doInvalidateSurface();
-+
- private:
-     QWaylandEglClientBufferIntegration *m_clientBufferIntegration;
-     struct wl_egl_window *m_waylandEglWindow;
-diff --git a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglcontext.cpp b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglcontext.cpp
-index e2e2f55..c07ad53 100644
---- a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglcontext.cpp
-+++ b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglcontext.cpp
-@@ -64,9 +64,7 @@ void QWaylandXCompositeEGLContext::swapBuffers(QPlatformSurface *surface)
- 
-     QSize size = w->geometry().size();
- 
--    w->attach(w->buffer(), 0, 0);
--    w->damage(QRect(QPoint(), size));
--    w->commit();
-+    w->commit(w->buffer(), QRegion(0, 0, size.width(), size.height()));
-     w->waitForFrameSync();
- }
- 
-diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxcontext.cpp b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxcontext.cpp
-index bc6e94f..439acc0 100644
---- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxcontext.cpp
-+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxcontext.cpp
-@@ -90,9 +90,7 @@ void QWaylandXCompositeGLXContext::swapBuffers(QPlatformSurface *surface)
- 
-     glXSwapBuffers(m_display, w->xWindow());
- 
--    w->attach(w->buffer(), 0, 0);
--    w->damage(QRect(QPoint(), size));
--    w->commit();
-+    w->commit(w->buffer(), QRegion(0, 0, size.width(), size.height()));
-     w->waitForFrameSync();
- }
- 
-diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp
-index f8871fa..ecc47e0 100644
---- a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp
-+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface.cpp
-@@ -71,6 +71,13 @@ QWaylandIviSurface::~QWaylandIviSurface()
-     delete m_extendedWindow;
- }
- 
-+void QWaylandIviSurface::setType(Qt::WindowType type, QWaylandWindow *transientParent)
-+{
-+
-+    Q_UNUSED(type)
-+    Q_UNUSED(transientParent)
-+}
-+
- void QWaylandIviSurface::createExtendedSurface(QWaylandWindow *window)
- {
-     if (window->display()->windowExtension())
-diff --git a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h
-index 96978e2..9ac81ad 100644
---- a/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h
-+++ b/src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h
-@@ -56,6 +56,8 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface
-                        struct ::ivi_controller_surface *iviControllerSurface);
-     virtual ~QWaylandIviSurface();
- 
-+    void setType(Qt::WindowType type, QWaylandWindow *transientParent) override;
-+
- private:
-     void createExtendedSurface(QWaylandWindow *window);
-     virtual void ivi_surface_configure(int32_t width, int32_t height) Q_DECL_OVERRIDE;
-diff --git a/tests/auto/client/client/tst_client.cpp b/tests/auto/client/client/tst_client.cpp
-index 74363ef..6aad25b 100644
---- a/tests/auto/client/client/tst_client.cpp
-+++ b/tests/auto/client/client/tst_client.cpp
-@@ -248,8 +248,8 @@ void tst_WaylandClient::backingStore()
- 
-     window.hide();
- 
--    // hiding the window should detach the buffer
--    QTRY_VERIFY(surface->image.isNull());
-+    // hiding the window should destroy the surface
-+    QTRY_VERIFY(!compositor->surface());
- }
- 
- class DndWindow : public QWindow