summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorwjiang <wjiang@codeaurora.org>2013-08-08 18:49:41 +0800
committerSteve Kondik <shade@chemlab.org>2013-08-18 16:46:39 -0700
commitfeb365184f1b020278849fb171095d3e95f44a9c (patch)
tree7b5c632453bab0be8788f5704668157cb11851e8 /src
parent6e7d9a0e461440b6d51546de137040a40d20d034 (diff)
downloadandroid_packages_apps_Gallery2-feb365184f1b020278849fb171095d3e95f44a9c.tar.gz
android_packages_apps_Gallery2-feb365184f1b020278849fb171095d3e95f44a9c.tar.bz2
android_packages_apps_Gallery2-feb365184f1b020278849fb171095d3e95f44a9c.zip
Gallery2: Recycle effect instance when MovieActivity pauses
VideoView will deallocate audio track for local video playback when MovieActivity being paused, which causes audio effect being released twice when onDestroy() is called. To avoid such special case, we should ensure effect be deallocated/allocated when video view call pause/resume. Change-Id: I571f9f3126be747ebe4e65a01f6880941d00d25d CRs-Fixed: 522349, 523853, 524557
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/app/MovieActivity.java78
1 files changed, 47 insertions, 31 deletions
diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java
index fc712964e..40f845efb 100644
--- a/src/com/android/gallery3d/app/MovieActivity.java
+++ b/src/com/android/gallery3d/app/MovieActivity.java
@@ -198,27 +198,7 @@ public class MovieActivity extends Activity {
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
- int sessionId = mp.getAudioSessionId();
- if (mBassBoostSupported) {
- mBassBoostEffect = new BassBoost(0, sessionId);
- }
- if (mVirtualizerSupported) {
- mVirtualizerEffect = new Virtualizer(0, sessionId);
- }
- if (mIsHeadsetOn) {
- if (mPrefs.getBoolean(Key.global_enabled.toString(), false)) {
- if (mBassBoostSupported) {
- mBassBoostEffect.setStrength((short)
- mPrefs.getInt(Key.bb_strength.toString(), 0));
- mBassBoostEffect.setEnabled(true);
- }
- if (mVirtualizerSupported) {
- mVirtualizerEffect.setStrength((short)
- mPrefs.getInt(Key.virt_strength.toString(), 0));
- mVirtualizerEffect.setEnabled(true);
- }
- }
- }
+ initEffects(mp.getAudioSessionId());
}
});
}
@@ -409,6 +389,46 @@ public class MovieActivity extends Activity {
}
}
+ private void initEffects(int sessionId) {
+ // Singleton instance
+ if ((mBassBoostEffect == null) && mBassBoostSupported) {
+ mBassBoostEffect = new BassBoost(0, sessionId);
+ }
+
+ if ((mVirtualizerEffect == null) && mVirtualizerSupported) {
+ mVirtualizerEffect = new Virtualizer(0, sessionId);
+ }
+
+ if (mIsHeadsetOn) {
+ if (mPrefs.getBoolean(Key.global_enabled.toString(), false)) {
+ if (mBassBoostSupported) {
+ mBassBoostEffect.setStrength((short)
+ mPrefs.getInt(Key.bb_strength.toString(), 0));
+ mBassBoostEffect.setEnabled(true);
+ }
+ if (mVirtualizerSupported) {
+ mVirtualizerEffect.setStrength((short)
+ mPrefs.getInt(Key.virt_strength.toString(), 0));
+ mVirtualizerEffect.setEnabled(true);
+ }
+ }
+ }
+
+ }
+
+ private void releaseEffects() {
+ if (mBassBoostEffect != null) {
+ mBassBoostEffect.setEnabled(false);
+ mBassBoostEffect.release();
+ mBassBoostEffect = null;
+ }
+ if (mVirtualizerEffect != null) {
+ mVirtualizerEffect.setEnabled(false);
+ mVirtualizerEffect.release();
+ mVirtualizerEffect = null;
+ }
+ }
+
private Intent createShareIntent() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("video/*");
@@ -455,6 +475,9 @@ public class MovieActivity extends Activity {
@Override
public void onPause() {
+ // Audio track will be deallocated for local video playback,
+ // thus recycle effect here.
+ releaseEffects();
mPlayer.onPause();
try {
unregisterReceiver(mReceiver);
@@ -474,6 +497,8 @@ public class MovieActivity extends Activity {
intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
registerReceiver(mReceiver, intentFilter);
}
+
+ initEffects(mPlayer.getAudioSessionId());
super.onResume();
}
@@ -485,17 +510,8 @@ public class MovieActivity extends Activity {
@Override
public void onDestroy() {
+ releaseEffects();
mPlayer.onDestroy();
- if (mBassBoostEffect != null) {
- mBassBoostEffect.setEnabled(false);
- mBassBoostEffect.release();
- mBassBoostEffect = null;
- }
- if (mVirtualizerEffect != null) {
- mVirtualizerEffect.setEnabled(false);
- mVirtualizerEffect.release();
- mVirtualizerEffect = null;
- }
super.onDestroy();
}