• Vlad Zahorodnii's avatar
    refactor: provide expected presentation time to effects · c77b5af5
    Vlad Zahorodnii authored
    Effects are given the interval between two consecutive frames. The main
    flaw of this approach is that if the Compositor transitions from the idle
    state to "active" state, i.e. when there is something to repaint,
    effects may see a very large interval between the last painted frame and
    the current. In order to address this issue, the Scene invalidates the
    timer that is used to measure time between consecutive frames before the
    Compositor is about to become idle.
    While this works perfectly fine with Xinerama-style rendering, with per
    screen rendering, determining whether the compositor is about to idle is
    rather a tedious task mostly because a single output can't be used for
    the test.
    Furthermore, since the Compositor schedules pointless repaints just to
    ensure that it's idle, it might take several attempts to figure out
    whether the scene timer must be invalidated if you use (true) per screen
    Ideally, all effects should use a timeline help...
scene.cpp 37.9 KB