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
diff --git a/services/core/java/com/android/server/audio/RotationHelper.java b/services/core/java/com/android/server/audio/RotationHelper.java
index f03e6c7..359cc36 100644
--- a/services/core/java/com/android/server/audio/RotationHelper.java
+++ b/services/core/java/com/android/server/audio/RotationHelper.java
@@ -192,16 +192,18 @@
         }
 
         public void run() {
-            int newRotation;
             while (mWaitCounter < WAIT_TIMES_MS.length) {
-                updateOrientation();
                 int waitTimeMs;
                 synchronized(mCounterLock) {
-                    waitTimeMs = WAIT_TIMES_MS[mWaitCounter];
+                    waitTimeMs = mWaitCounter < WAIT_TIMES_MS.length ?
+                            WAIT_TIMES_MS[mWaitCounter] : 0;
                     mWaitCounter++;
                 }
                 try {
-                    sleep(waitTimeMs);
+                    if (waitTimeMs > 0) {
+                        sleep(waitTimeMs);
+                        updateOrientation();
+                    }
                 } catch (InterruptedException e) { }
             }
         }