diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2018-09-12 12:34:01 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2018-09-12 12:34:01 +0000 |
commit | 1fb9c318f8233781eb80599195f67a75ff2a2e3b (patch) | |
tree | 37db01b5fc4d095556efcf950b223a7d18063dfc | |
parent | f669fc9749fce770420e1efece893bb2724a003c (diff) | |
parent | ffcfa1cae06ce5dc8cd5c3e8cbb585b8fe62b32c (diff) | |
download | qtwayland-1fb9c318f8233781eb80599195f67a75ff2a2e3b.tar.gz |
Merge "Merge remote-tracking branch 'qt/5.11' into 5.12" into refs/staging/5.12
-rw-r--r-- | dist/changes-5.11.2 | 45 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandview.cpp | 57 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandview_p.h | 2 |
3 files changed, 80 insertions, 24 deletions
diff --git a/dist/changes-5.11.2 b/dist/changes-5.11.2 new file mode 100644 index 00000000..b831352e --- /dev/null +++ b/dist/changes-5.11.2 @@ -0,0 +1,45 @@ +Qt 5.11.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.11.0 through 5.11.1. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.11 series is binary compatible with the 5.10.x series. +Applications compiled for 5.10 will continue to run with 5.11. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Qt 5.11.2 Changes * +**************************************************************************** + + - Added support for building QtWayland on macOS. + +**************************************************************************** +* Compositor * +**************************************************************************** + + - [QTBUG-70126] Fixed a bug where ShellSurfaceItems for XdgToplevelV6s + wouldn't stop resizing. + - Close requests for clients using xdg-shell unstable v5 are now handled. + - [QTBUG-69643] Fixed a bug where subsurfaces would not be rendered if clients + added them before a WaylandQuickItem was created for the parent surface. + +**************************************************************************** +* QPA plugin * +**************************************************************************** + + - Fixed the window decorations sometimes not updating on some compositors. + - Fixed a bug where a window that was hidden and then shown on different + screen would still think it was on the first screen. + - Fixed a bug where a buffer was committed multiple times. + - Fixed a memory leak when destroying toplevel windows on xdg-shell unstable + v6. diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp index 477b4589..12759377 100644 --- a/src/compositor/compositor_api/qwaylandview.cpp +++ b/src/compositor/compositor_api/qwaylandview.cpp @@ -55,8 +55,9 @@ void QWaylandViewPrivate::markSurfaceAsDestroyed(QWaylandSurface *surface) Q_Q(QWaylandView); Q_ASSERT(surface == this->surface); - q->setSurface(nullptr); + setSurface(nullptr); emit q->surfaceDestroyed(); + clearFrontBuffer(); } /*! @@ -132,38 +133,46 @@ QWaylandSurface *QWaylandView::surface() const return d->surface; } -void QWaylandView::setSurface(QWaylandSurface *newSurface) -{ - Q_D(QWaylandView); - if (d->surface == newSurface) - return; - - if (d->surface) { - QWaylandSurfacePrivate::get(d->surface)->derefView(this); - if (d->output) - QWaylandOutputPrivate::get(d->output)->removeView(this, d->surface); +void QWaylandViewPrivate::setSurface(QWaylandSurface *newSurface) +{ + Q_Q(QWaylandView); + if (surface) { + QWaylandSurfacePrivate::get(surface)->derefView(q); + if (output) + QWaylandOutputPrivate::get(output)->removeView(q, surface); } - d->surface = newSurface; + surface = newSurface; - if (!d->bufferLocked) { - d->currentBuffer = QWaylandBufferRef(); - d->currentDamage = QRegion(); - } + nextBuffer = QWaylandBufferRef(); + nextBufferCommitted = false; + nextDamage = QRegion(); - d->nextBuffer = QWaylandBufferRef(); - d->nextBufferCommitted = false; - d->nextDamage = QRegion(); + if (surface) { + QWaylandSurfacePrivate::get(surface)->refView(q); + if (output) + QWaylandOutputPrivate::get(output)->addView(q, surface); + } +} - if (d->surface) { - QWaylandSurfacePrivate::get(d->surface)->refView(this); - if (d->output) - QWaylandOutputPrivate::get(d->output)->addView(this, d->surface); +void QWaylandViewPrivate::clearFrontBuffer() +{ + if (!bufferLocked) { + currentBuffer = QWaylandBufferRef(); + currentDamage = QRegion(); } +} - emit surfaceChanged(); +void QWaylandView::setSurface(QWaylandSurface *newSurface) +{ + Q_D(QWaylandView); + if (d->surface == newSurface) + return; + d->setSurface(newSurface); + d->clearFrontBuffer(); + emit surfaceChanged(); } /*! diff --git a/src/compositor/compositor_api/qwaylandview_p.h b/src/compositor/compositor_api/qwaylandview_p.h index b9cb0d07..e7f521af 100644 --- a/src/compositor/compositor_api/qwaylandview_p.h +++ b/src/compositor/compositor_api/qwaylandview_p.h @@ -74,6 +74,8 @@ public: { } void markSurfaceAsDestroyed(QWaylandSurface *surface); + void setSurface(QWaylandSurface *newSurface); + void clearFrontBuffer(); QObject *renderObject = nullptr; QWaylandSurface *surface = nullptr; |