summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compositor/wayland_wrapper/wlsurface.cpp21
-rw-r--r--src/plugins/platforms/wayland/qwaylandwindow.cpp7
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);