diff options
-rw-r--r-- | src/compositor/wayland_wrapper/wlsurface.cpp | 21 | ||||
-rw-r--r-- | src/plugins/platforms/wayland/qwaylandwindow.cpp | 7 |
2 files changed, 13 insertions, 15 deletions
diff --git a/src/compositor/wayland_wrapper/wlsurface.cpp b/src/compositor/wayland_wrapper/wlsurface.cpp index fc2d8d9de..1b1926e98 100644 --- a/src/compositor/wayland_wrapper/wlsurface.cpp +++ b/src/compositor/wayland_wrapper/wlsurface.cpp @@ -393,18 +393,15 @@ void Surface::attach(struct wl_buffer *buffer) void Surface::damage(const QRect &rect) { - if (m_bufferQueue.size()) { - SurfaceBuffer *surfaceBuffer = m_bufferQueue.last(); - if (surfaceBuffer) - surfaceBuffer->setDamage(rect); - else - qWarning() << "Surface::damage() null buffer"; - if (!m_backBuffer) - advanceBufferQueue(); - } else { - // we've receicved a second damage for the same buffer - currentSurfaceBuffer()->setDamage(rect); - } + SurfaceBuffer *surfaceBuffer = m_bufferQueue.isEmpty() ? currentSurfaceBuffer() : m_bufferQueue.last(); + if (surfaceBuffer) + surfaceBuffer->setDamage(rect); + else + qWarning() << "Surface::damage() null buffer"; + + if (!m_bufferQueue.isEmpty() && !m_backBuffer) + advanceBufferQueue(); + doUpdate(); } diff --git a/src/plugins/platforms/wayland/qwaylandwindow.cpp b/src/plugins/platforms/wayland/qwaylandwindow.cpp index 07a9c467f..0273cd294 100644 --- a/src/plugins/platforms/wayland/qwaylandwindow.cpp +++ b/src/plugins/platforms/wayland/qwaylandwindow.cpp @@ -122,14 +122,15 @@ void QWaylandWindow::setVisible(bool visible) { if (visible) { + if (mBuffer) + wl_surface_attach(mSurface, mBuffer->buffer(), 0, 0); + if (!mSentInitialResize) { QWindowSystemInterface::handleSynchronousGeometryChange(window(), geometry()); mSentInitialResize = true; } + QWindowSystemInterface::handleSynchronousExposeEvent(window(), QRect(QPoint(), geometry().size())); - if (mBuffer) { - wl_surface_attach(mSurface, mBuffer->buffer(),0,0); - } } else { QWindowSystemInterface::handleSynchronousExposeEvent(window(), QRect(QPoint(), geometry().size())); wl_surface_attach(mSurface, 0,0,0); |