Fix crash when using kwin on windowed mode

Summary:
Used to get:
`kwin_wayland: kwin/composite.cpp:646: void KWin::Compositor::aboutToSwapBuffers(): Assertion "!m_bufferSwapPending' failed."`

Test Plan: Ran `kwin_wayland --socket dave --output-count 2 konsole`

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D20056
This commit is contained in:
Aleix Pol 2019-03-29 18:43:43 +01:00
parent c795f1389b
commit 2e1880b85a
2 changed files with 6 additions and 1 deletions

View file

@ -289,7 +289,10 @@ void EglWaylandBackend::present()
void EglWaylandBackend::presentOnSurface(EglWaylandOutput *output)
{
output->m_waylandOutput->surface()->setupFrameCallback();
Compositor::self()->aboutToSwapBuffers();
if (!m_swapping) {
m_swapping = true;
Compositor::self()->aboutToSwapBuffers();
}
if (supportsBufferAge()) {
eglSwapBuffers(eglDisplay(), output->m_eglSurface);
@ -321,6 +324,7 @@ QRegion EglWaylandBackend::prepareRenderingFrame()
{
eglWaitNative(EGL_CORE_NATIVE_ENGINE);
startRenderTimer();
m_swapping = false;
return QRegion();
}

View file

@ -109,6 +109,7 @@ private:
WaylandBackend *m_backend;
QVector<EglWaylandOutput*> m_outputs;
bool m_havePlatformBase;
bool m_swapping = false;
friend class EglWaylandTexture;
};