Add support for multiple animation tracks
The shell-transition player "Transitions" only supported playing one animation at a time. It supported limited support for concurrent animation via `merging`, but this is for specific/curated situations. Since support via merge is complicated, there weren't many implementors and instead, by default, animations would just jump-to-end to allow the next animation to start immediately (to minimize perceived latency). Unfortunately, if there are TRULY independent transitions, this mechanism is unweildy as it'd require adding support for any incoming transition into any active animation. This CL moves the existing queue/merge mechanism into a "track" and then adds support for multiple tracks to play simultaneously. This way, for transitions which aren't independent, the mechanism doesn't change; however, for truly independent transitions, their corresponding animations can also run independently. The expectation is for WMCore to assign track ids to transitions. Then the player (Transitions.java) can use this information to either play them in parallel or, in the future, do some type of merging on its own. The default is that, all transitions with the same track-id will play in the same track and serialize with eachother -- but otherwise the tracks are independent. There may, however, be some situations where a transition might conflict with more than 1 track. In this case, we just fall-back to a global "SYNC" and basically wait/ flush all the running animations/tracks before starting. Supporting anything fancier is not worth the effort since this situation isn't likely to be very common. This SYNC is actually implemented by just generalizing the existing SLEEP failsafe mechanic. We now just treat an incoming SLEEP the same as SYNC. Bug: 277838915 Bug: 264536014 Test: atest ShellTransitionTests Test: this change, alone, should be a no-op so existing tests too. Change-Id: I97ca21e0917be884cac105a6cb2d2c656f0e4207
Loading
Please register or sign in to comment