diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2022-06-25 10:57:41 +1000 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2022-11-13 14:04:02 +0100 |
commit | 5ccba00d2007d664b9ffd0f956323a8180cb8e66 (patch) | |
tree | 025fb6928ceaa9a3a7842975104675a2708fc095 /vcl | |
parent | d773da0c083b4ee1cf1cccc2bd7846cbdbe37ed8 (diff) |
vcl: extract functions AllRenderersPaused() and PruneMarkedRenderers()
Change-Id: I0fc55e829e22b81a076f2b66d78bb2b90abdfc41
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136413
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/animate/Animation.cxx | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/vcl/source/animate/Animation.cxx b/vcl/source/animate/Animation.cxx index e1bd5ba042fc..5d4a208a6b30 100644 --- a/vcl/source/animate/Animation.cxx +++ b/vcl/source/animate/Animation.cxx @@ -361,6 +361,24 @@ void Animation::RenderNextFrameInAllRenderers() ImplRestartTimer(pCurrentFrameBmp->mnWait); } +void Animation::PruneMarkedRenderers() +{ + // delete all unmarked views + auto removeStart = std::remove_if(maRenderers.begin(), maRenderers.end(), + [](const auto& pRenderer) { return !pRenderer->isMarked(); }); + maRenderers.erase(removeStart, maRenderers.cend()); + + // reset marked state + std::for_each(maRenderers.cbegin(), maRenderers.cend(), + [](const auto& pRenderer) { pRenderer->setMarked(false); }); +} + +bool Animation::IsAnyRendererActive() +{ + return std::any_of(maRenderers.cbegin(), maRenderers.cend(), + [](const auto& pRenderer) { return !pRenderer->isPaused(); }); +} + IMPL_LINK_NOARG(Animation, ImplTimeoutHdl, Timer*, void) { const size_t nAnimCount = maFrames.size(); @@ -373,21 +391,8 @@ IMPL_LINK_NOARG(Animation, ImplTimeoutHdl, Timer*, void) { maNotifyLink.Call(this); PopulateRenderers(); - - // delete all unmarked views - auto removeStart - = std::remove_if(maRenderers.begin(), maRenderers.end(), - [](const auto& pRenderer) { return !pRenderer->isMarked(); }); - maRenderers.erase(removeStart, maRenderers.cend()); - - // check if every remaining view is paused - bIsAnyRendererActive - = std::any_of(maRenderers.cbegin(), maRenderers.cend(), - [](const auto& pRenderer) { return !pRenderer->isPaused(); }); - - // reset marked state - std::for_each(maRenderers.cbegin(), maRenderers.cend(), - [](const auto& pRenderer) { pRenderer->setMarked(false); }); + PruneMarkedRenderers(); + bIsAnyRendererActive = IsAnyRendererActive(); } if (maRenderers.empty()) |