diff options
author | Nahun Kim <nahun27.kim@samsung.com> | 2020-09-22 19:48:12 +0900 |
---|---|---|
committer | Todd Kennedy <toddke@google.com> | 2020-09-24 07:44:59 -0700 |
commit | 21fbcd7c05b8eec5ac9097b407277396468964c5 (patch) | |
tree | dd91975f9c24c6357eec9d04249808355a1d045e /rs/java/android/renderscript/ProgramFragmentFixedFunction.java | |
parent | 4873666fc075f59f65b72dc119e038ee209d2942 (diff) |
Fix a timing issue where LauncherApps registers its callback twice
There is an edge case while the launcher process is killed and restarted by unexpected behavior.
LauncherApps unregisters a listener by being called back onCallbackDied from PackageCallbackList when the launcher process is killed.
However the launcher process is immediately restarted and registers a listener in the middle of processing binderDied() even before calling the onCallbackDied() in the binderDied().
This solution is to maintain a boolean, isWatchingPackageBroadcasts, determining whether or not the monitor has been registered.
startWatchingPackageBroadcasts() and stopWatchingPackageBroadcasts() are always called with the mListeners lock held, it can check/toggle the state safely in those methods.
Test: compile & verify basic functions working
Bug: 162753652
Change-Id: If91e4bc32b17b88576777699b3d8d9f409fae91d
Diffstat (limited to 'rs/java/android/renderscript/ProgramFragmentFixedFunction.java')
0 files changed, 0 insertions, 0 deletions