Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 6f64d029 authored by Hawkwood Glazier's avatar Hawkwood Glazier
Browse files

Do not remove new animators when previous animator is ended

PropertyAnimator removes the animator from the view tag when it ends.
In rare cases, this was causing a previous animator to remove a newly
set animator from the tags, instead of the completed animator. This
occurred because the subsequent animation was triggered from the
onAnimationEnd callback of a previous animator. This would cause the
new animator to be set into the view's tags, before the other callback
unset those tags.

In this case, the KeyguardStatusView hide animation is being removed
from the view tags. While that is running, KeyguardVisibilityHelper
attempts and fails to cancel the hide animation when it determined the
view should instead be shown. As a result, the view is hidden after the
hide animation runs to it's conclusion.

There are two races which have to occur in sequence for this this effect
to be triggered. First the animation which hides the view must start
before the previous animation removes itself from the tags. Next the
KeyguardVisibilityHelper must attempt to show the view again before that
hide animation completes, so that a cancellation is required. Neither of
these races occur consistently.

Bug: 290627350
Test: Manually checked issue reproduction
Change-Id: I2c59d58914d6eb0460712dcd3d6dd3c771368453
parent 8f23adcc
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment