1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

VBlankAnimatorUpdater: Use the timestamp provided by VBlankAttachment

This commit is contained in:
attila 2024-10-04 11:29:58 +02:00
parent 425f1858b5
commit 11403080ba
3 changed files with 25 additions and 3 deletions

View file

@ -62,6 +62,11 @@ void AnimatorUpdater::removeAnimator (const Animator& animator)
}
void AnimatorUpdater::update()
{
update (Time::getMillisecondCounterHiRes());
}
void AnimatorUpdater::update (double timestampMs)
{
if (reentrancyGuard)
{
@ -74,8 +79,6 @@ void AnimatorUpdater::update()
const ScopedValueSetter setter { reentrancyGuard, true };
const auto timestampMs = Time::getMillisecondCounterHiRes();
for (currentIterator = animators.begin(); currentIterator != animators.end();)
{
auto& current = *currentIterator;

View file

@ -80,9 +80,24 @@ public:
/** Calls Animator::update() for all registered Animators that are still alive. References to
deleted Animators are removed.
Uses Time::getMillisecondCounterHiRes() to calculate the necessary timestamp. Consider using
a VBlankAnimatorUpdater instead for using timestamps that are synchronised across all
VBlankAnimatorUpdater instances.
*/
void update();
/** Calls Animator::update() for all registered Animators that are still alive. References to
deleted Animators are removed.
The supplied timestamp should be monotonically increasing for correct behaviour. Ideally
this should be a timestamp supplied by a VBlankAttachment. Consider using the
VBlankAnimatorUpdater class, which takes care of supplying the right timestamp.
@see VBlankAnimatorUpdater
*/
void update (double timestampMs);
private:
struct JUCE_API Entry
{

View file

@ -46,7 +46,11 @@ public:
/** Constructs a VBlankAnimatorUpdater that is synchronised to the refresh rate of the monitor
that the provided Component is being displayed on.
*/
explicit VBlankAnimatorUpdater (Component* c) : vBlankAttachment (c, [this] { update(); })
explicit VBlankAnimatorUpdater (Component* c)
: vBlankAttachment (c, [this] (double timestampSec)
{
update (timestampSec * 1000.0);
})
{
}