From d3f4da370bafc85519e9e7d94eabf8909537ec6b Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Thu, 3 Jun 2021 11:45:29 +0300 Subject: [PATCH] Prevent emitting Scene::frameRendered more than once per frame Currently, the frameRendered() signal is emitted every time an effect calls paintScreen(). This means that the frameRendered() signal can be emitted more than once when effects such as slide are active. However, we'd like if it's emitted only once before buffers are swapped. --- src/scene.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scene.cpp b/src/scene.cpp index ba9d691837..96b145fc04 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -197,6 +197,8 @@ void Scene::paintScreen(int* mask, const QRegion &damage, const QRegion &repaint ScreenPaintData data(projection, effects->findScreen(painted_screen)); effects->paintScreen(*mask, region, data); + Q_EMIT frameRendered(); + foreach (Window *w, stacking_order) { effects->postPaintWindow(effectWindow(w)); } @@ -224,8 +226,6 @@ void Scene::finalPaintScreen(int mask, const QRegion ®ion, ScreenPaintData& d paintGenericScreen(mask, data); else paintSimpleScreen(mask, region); - - Q_EMIT frameRendered(); } static void resetRepaintsHelper(Item *item, int screen)