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.
This commit is contained in:
Vlad Zahorodnii 2021-06-03 11:45:29 +03:00
parent 8b3e999fbf
commit d3f4da370b

View file

@ -197,6 +197,8 @@ void Scene::paintScreen(int* mask, const QRegion &damage, const QRegion &repaint
ScreenPaintData data(projection, effects->findScreen(painted_screen)); ScreenPaintData data(projection, effects->findScreen(painted_screen));
effects->paintScreen(*mask, region, data); effects->paintScreen(*mask, region, data);
Q_EMIT frameRendered();
foreach (Window *w, stacking_order) { foreach (Window *w, stacking_order) {
effects->postPaintWindow(effectWindow(w)); effects->postPaintWindow(effectWindow(w));
} }
@ -224,8 +226,6 @@ void Scene::finalPaintScreen(int mask, const QRegion &region, ScreenPaintData& d
paintGenericScreen(mask, data); paintGenericScreen(mask, data);
else else
paintSimpleScreen(mask, region); paintSimpleScreen(mask, region);
Q_EMIT frameRendered();
} }
static void resetRepaintsHelper(Item *item, int screen) static void resetRepaintsHelper(Item *item, int screen)