summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandwindow_p.h
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2018-09-24 13:04:51 +0200
committerJohan Helsing <johan.helsing@qt.io>2018-10-26 11:05:00 +0000
commit88a0246a46c30e08e9730d16cf8739773447d058 (patch)
treef9d20ff21e77031b7ddcb33394aa0e35de491933 /src/client/qwaylandwindow_p.h
parentba53384387dcfd2606a513b114eff488d3fdb940 (diff)
Client: Don't attach buffers to unexposed windows
QBackingStore::flush is sometimes called with an unxeposed window, in that case, don't attach the buffer to the wl_surface immediately, as that causes protocol errors with xdg_shell. Flushed buffers are instead stored until we get the first configure event. [ChangeLog][QPA plugin][xdg-shell] Fixed a bug where buffers were sometimes attached and committed before the first configure event, causing protocol errors. Fixes: QTBUG-71345 Change-Id: If9409d97bd25f6b13940c56141920a664c349c8e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org>
Diffstat (limited to 'src/client/qwaylandwindow_p.h')
-rw-r--r--src/client/qwaylandwindow_p.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
index d11ed871b..ad24b7358 100644
--- a/src/client/qwaylandwindow_p.h
+++ b/src/client/qwaylandwindow_p.h
@@ -116,6 +116,8 @@ public:
using QtWayland::wl_surface::damage;
void damage(const QRect &rect);
+ void safeCommit(QWaylandBuffer *buffer, const QRegion &damage);
+ void handleExpose(const QRegion &region);
void commit(QWaylandBuffer *buffer, const QRegion &damage);
void waitForFrameSync();
@@ -231,6 +233,8 @@ protected:
Qt::WindowStates mLastReportedWindowStates = Qt::WindowNoState;
QWaylandShmBackingStore *mBackingStore = nullptr;
+ QWaylandBuffer *mQueuedBuffer = nullptr;
+ QRegion mQueuedBufferDamage;
private slots:
void handleScreenRemoved(QScreen *qScreen);