Fix AudioService rotation helper thread
Fix a race condition where the wait index can be incremented inbetween the while() loop and the lock Fix when updateOrientation() is called: after the sleep, otherwise the last sleep is useless. Bug 24677424 Change-Id: I03770a0fc8af57f4696ebee7e9c9110e17c55a24
This commit is contained in:
@@ -192,16 +192,18 @@ class RotationHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
int newRotation;
|
|
||||||
while (mWaitCounter < WAIT_TIMES_MS.length) {
|
while (mWaitCounter < WAIT_TIMES_MS.length) {
|
||||||
updateOrientation();
|
|
||||||
int waitTimeMs;
|
int waitTimeMs;
|
||||||
synchronized(mCounterLock) {
|
synchronized(mCounterLock) {
|
||||||
waitTimeMs = WAIT_TIMES_MS[mWaitCounter];
|
waitTimeMs = mWaitCounter < WAIT_TIMES_MS.length ?
|
||||||
|
WAIT_TIMES_MS[mWaitCounter] : 0;
|
||||||
mWaitCounter++;
|
mWaitCounter++;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
if (waitTimeMs > 0) {
|
||||||
sleep(waitTimeMs);
|
sleep(waitTimeMs);
|
||||||
|
updateOrientation();
|
||||||
|
}
|
||||||
} catch (InterruptedException e) { }
|
} catch (InterruptedException e) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user