summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/compositor_api/qwaylandview.cpp')
-rw-r--r--src/compositor/compositor_api/qwaylandview.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp
index 90f182c5d..fa1371925 100644
--- a/src/compositor/compositor_api/qwaylandview.cpp
+++ b/src/compositor/compositor_api/qwaylandview.cpp
@@ -200,18 +200,27 @@ void QWaylandView::attach(const QWaylandBufferRef &ref, const QRegion &damage)
bool QWaylandView::advance()
{
Q_D(QWaylandView);
- if (d->currentBuffer == d->nextBuffer)
+ if (d->currentBuffer == d->nextBuffer && !d->forceAdvanceSucceed)
return false;
if (d->bufferLock)
return false;
QMutexLocker locker(&d->bufferMutex);
+ d->forceAdvanceSucceed = false;
d->currentBuffer = d->nextBuffer;
d->currentDamage = d->nextDamage;
return true;
}
+void QWaylandView::discardCurrentBuffer()
+{
+ Q_D(QWaylandView);
+ QMutexLocker locker(&d->bufferMutex);
+ d->currentBuffer = QWaylandBufferRef();
+ d->forceAdvanceSucceed = true;
+}
+
QWaylandBufferRef QWaylandView::currentBuffer()
{
Q_D(QWaylandView);