Fix race condition triggered by quick stop/start of Dream
If a Dream was running, then stopped and restarted in quick succession
it was possible for it to fail to restart. It would do this because
before starting a dream, there is a check to ensure that the requested
dream is not already running.
All dreams are started and stopped on a handler thread, because of this
it is possible for the dream to still be running when #stopDream is
called followed immediately by #startDream.
This CL changes the check at the beginning of #startDreamLocked to
ensure that the current dream is not in the process of waking before
returning early which prevents this error from happening.
Bug: 181523689
Test: adb shell input keyevent KEYCODE_WAKEUP && \
sleep .02 && \
adb shell input keyevent KEYCODE_SLEEP
Change-Id: I0ba6f630f114df18c49e65ac1a72c8040db64817
1 file changed