diff options
author | Danny Baumann <dannybaumann@web.de> | 2012-05-22 19:58:50 +0200 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2012-05-24 13:01:59 +0200 |
commit | 32b4d32539b5d8f7ac59f29f8a75c0a21807fbb0 (patch) | |
tree | 2b3dbe318515e432318530620e1526ae590228b0 | |
parent | 4c113489d4ef8db98cce2ae02bb8a7906199311b (diff) | |
download | frameworks_base-32b4d32539b5d8f7ac59f29f8a75c0a21807fbb0.zip frameworks_base-32b4d32539b5d8f7ac59f29f8a75c0a21807fbb0.tar.gz frameworks_base-32b4d32539b5d8f7ac59f29f8a75c0a21807fbb0.tar.bz2 |
Restore audio effect connections after binder death.
-rw-r--r-- | media/java/android/media/audiofx/AudioEffect.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java index 3e54627..ede4b71 100644 --- a/media/java/android/media/audiofx/AudioEffect.java +++ b/media/java/android/media/audiofx/AudioEffect.java @@ -140,6 +140,11 @@ public class AudioEffect { * @hide */ public static final int NATIVE_EVENT_PARAMETER_CHANGED = 2; + /** + * Event id for engine error notification. + * @hide + */ + public static final int NATIVE_EVENT_ERROR = 3; /** * Successful operation. @@ -264,6 +269,9 @@ public class AudioEffect { private int mNativeAudioEffect; private int mJniData; + private int mPriority; + private int mAudioSession; + /** * Effect descriptor */ @@ -338,6 +346,11 @@ public class AudioEffect { public AudioEffect(UUID type, UUID uuid, int priority, int audioSession) throws IllegalArgumentException, UnsupportedOperationException, RuntimeException { + init(type, uuid, priority, audioSession); + createNativeEventHandler(); + } + + private void init(UUID type, UUID uuid, int priority, int audioSession) { int[] id = new int[1]; Descriptor[] desc = new Descriptor[1]; // native initialization @@ -364,6 +377,8 @@ public class AudioEffect { mDescriptor = desc[0]; synchronized (mStateLock) { mState = STATE_INITIALIZED; + mPriority = priority; + mAudioSession = audioSession; } } @@ -1096,7 +1111,15 @@ public class AudioEffect { status, param, value); } break; - + case NATIVE_EVENT_ERROR: + release(); + try { + init(mDescriptor.type, mDescriptor.uuid, mPriority, mAudioSession); + Log.i(TAG, "Reconnected audio effect after native error"); + } catch (RuntimeException e) { + Log.e(TAG, "Could not reconnect audio effect", e); + } + break; default: Log.e(TAG, "handleMessage() Unknown event type: " + msg.what); break; |