Fix 5514230: preventing null window token from occurring
Sometimes the lockscreen view is recreated even though it has already been created (and therefore Face Unlock is already running). One example of this is when the lockscreen momentarily displays in landscape mode and then corrects itself into portrait mode. When lockscreen recreates itself, it removes the view and then later re-adds the view. During that time the window token is null and may be passed to Face Unlock when it tries to restart. The reason this doesn't happen *every* time the view is recreated is because the onServiceConnected() callback starts Face Unlock, and usually it runs after the view is re-added, but sometimes it runs before the view is re-added, resulting in this bug. An earlier fix put null-token checking inside of the Face Unlock service, which prevented crashing but Face Unlock was still unable to run. This fix makes the null token case not happen so Face Unlock can run every time. It accomplishes this by simply not restarting Face Unlock until the view has been re-added. This fix also replaces checking two flags everywhere to see if Face Unlock is being used and instead uses a single function call. Change-Id: Ib46f25f2a58ab2e70470337861c25ee81a858873
Loading
Please register or sign in to comment