summaryrefslogtreecommitdiffstats
path: root/variablespeed/src
diff options
context:
space:
mode:
authorJay Shrauner <shrauner@google.com>2014-02-26 10:08:37 -0800
committerJay Shrauner <shrauner@google.com>2014-03-06 16:58:27 +0000
commitce2b95ae200332495b348be07f77fe60b6c23dcc (patch)
tree08e2e3db703c977325d4d0fb15d01831a888b5eb /variablespeed/src
parente49544de8cf5224d0fd2af944b1431c92f7b83f9 (diff)
downloadandroid_frameworks_ex-ce2b95ae200332495b348be07f77fe60b6c23dcc.tar.gz
android_frameworks_ex-ce2b95ae200332495b348be07f77fe60b6c23dcc.tar.bz2
android_frameworks_ex-ce2b95ae200332495b348be07f77fe60b6c23dcc.zip
Fix AudioEngine to allow re-initialization - DO NOT MERGE
Add AudioEngine::CompareAndSetEngine and change VariableSpeed::initializeEngine to use this method so it only initializes a new engine once rather than asserting on subsequent calls. Change AudioEngine::DeleteEngine so it ignores repeated calls instead of asserting. Add VariableSpeed::isReadyToPlay so callers can detect when the audio library has been properly initialized. Bug:11511992 Change-Id: I4517cb2ab4c186da43dffc7dbc2a9ad49000059f (cherry picked from commit 8502b724a9fdc104e7b4a3aba1641e101b4c7be9)
Diffstat (limited to 'variablespeed/src')
-rw-r--r--variablespeed/src/com/android/ex/variablespeed/MediaPlayerProxy.java1
-rw-r--r--variablespeed/src/com/android/ex/variablespeed/SingleThreadedMediaPlayerProxy.java5
-rw-r--r--variablespeed/src/com/android/ex/variablespeed/VariableSpeed.java9
3 files changed, 14 insertions, 1 deletions
diff --git a/variablespeed/src/com/android/ex/variablespeed/MediaPlayerProxy.java b/variablespeed/src/com/android/ex/variablespeed/MediaPlayerProxy.java
index 8489dc1..3b7b576 100644
--- a/variablespeed/src/com/android/ex/variablespeed/MediaPlayerProxy.java
+++ b/variablespeed/src/com/android/ex/variablespeed/MediaPlayerProxy.java
@@ -42,6 +42,7 @@ public interface MediaPlayerProxy {
int getDuration();
void seekTo(int startPosition);
void start();
+ boolean isReadyToPlay();
boolean isPlaying();
int getCurrentPosition();
void pause();
diff --git a/variablespeed/src/com/android/ex/variablespeed/SingleThreadedMediaPlayerProxy.java b/variablespeed/src/com/android/ex/variablespeed/SingleThreadedMediaPlayerProxy.java
index 17692f7..c9a9741 100644
--- a/variablespeed/src/com/android/ex/variablespeed/SingleThreadedMediaPlayerProxy.java
+++ b/variablespeed/src/com/android/ex/variablespeed/SingleThreadedMediaPlayerProxy.java
@@ -85,6 +85,11 @@ public class SingleThreadedMediaPlayerProxy implements MediaPlayerProxy {
}
@Override
+ public synchronized boolean isReadyToPlay() {
+ return mDelegate.isReadyToPlay();
+ }
+
+ @Override
public synchronized boolean isPlaying() {
return mDelegate.isPlaying();
}
diff --git a/variablespeed/src/com/android/ex/variablespeed/VariableSpeed.java b/variablespeed/src/com/android/ex/variablespeed/VariableSpeed.java
index 5c93d26..e44a375 100644
--- a/variablespeed/src/com/android/ex/variablespeed/VariableSpeed.java
+++ b/variablespeed/src/com/android/ex/variablespeed/VariableSpeed.java
@@ -337,9 +337,16 @@ public class VariableSpeed implements MediaPlayerProxy {
}
@Override
+ public boolean isReadyToPlay() {
+ synchronized (lock) {
+ return !mHasBeenReleased && mHasDuration;
+ }
+ }
+
+ @Override
public boolean isPlaying() {
synchronized (lock) {
- return mHasStartedPlayback && !hasPlaybackFinished();
+ return isReadyToPlay() && mHasStartedPlayback && !hasPlaybackFinished();
}
}