34 lines
1.5 KiB
Diff
34 lines
1.5 KiB
Diff
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
|
|
index 3fe2ce80..6d660e64 100644
|
|
--- a/src/client/qwaylandshmbackingstore.cpp
|
|
+++ b/src/client/qwaylandshmbackingstore.cpp
|
|
@@ -289,11 +289,13 @@ void QWaylandShmBackingStore::resize(const QSize &size)
|
|
buffer = getBuffer(sizeWithMargins);
|
|
}
|
|
|
|
- qsizetype oldSize = mBackBuffer ? mBackBuffer->image()->sizeInBytes() : 0;
|
|
+ qsizetype oldSizeInBytes = mBackBuffer ? mBackBuffer->image()->sizeInBytes() : 0;
|
|
+ qsizetype newSizeInBytes = buffer->image()->sizeInBytes();
|
|
+
|
|
// mBackBuffer may have been deleted here but if so it means its size was different so we wouldn't copy it anyway
|
|
- if (mBackBuffer != buffer && oldSize == buffer->image()->sizeInBytes()) {
|
|
- memcpy(buffer->image()->bits(), mBackBuffer->image()->constBits(), buffer->image()->sizeInBytes());
|
|
- }
|
|
+ if (mBackBuffer != buffer && oldSizeInBytes == newSizeInBytes)
|
|
+ memcpy(buffer->image()->bits(), mBackBuffer->image()->constBits(), newSizeInBytes);
|
|
+
|
|
mBackBuffer = buffer;
|
|
// ensure the new buffer is at the beginning of the list so next time getBuffer() will pick
|
|
// it if possible
|
|
@@ -302,8 +304,9 @@ void QWaylandShmBackingStore::resize(const QSize &size)
|
|
mBuffers.prepend(buffer);
|
|
}
|
|
|
|
- if (windowDecoration() && window()->isVisible())
|
|
+ if (windowDecoration() && window()->isVisible() && oldSizeInBytes != newSizeInBytes) {
|
|
windowDecoration()->update();
|
|
+ }
|
|
}
|
|
|
|
QImage *QWaylandShmBackingStore::entireSurface() const
|