diff --git a/src/wayland/surface_interface.cpp b/src/wayland/surface_interface.cpp index 0a61f8ed6a..9587b1f382 100644 --- a/src/wayland/surface_interface.cpp +++ b/src/wayland/surface_interface.cpp @@ -426,6 +426,7 @@ QList SurfaceInterface::surfaces() void SurfaceInterface::frameRendered(quint32 msec) { // notify all callbacks + const bool needsFlush = !d->current.frameCallbacks.isEmpty(); while (!d->current.frameCallbacks.isEmpty()) { KWaylandFrameCallback *frameCallback = d->current.frameCallbacks.takeFirst(); frameCallback->send_done(msec); @@ -438,6 +439,9 @@ void SurfaceInterface::frameRendered(quint32 msec) } subSurface->d_func()->surface->frameRendered(msec); } + if (needsFlush) { + client()->flush(); + } } QMatrix4x4 SurfaceInterfacePrivate::buildSurfaceToBufferMatrix(const State *state)