aboutsummaryrefslogtreecommitdiff
path: root/subsonic-android/src
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2013-02-07 19:13:08 -0800
committerScott Jackson <daneren2005@gmail.com>2013-02-07 19:13:08 -0800
commit6612b1049231374d69d4cdd3fe9b52571048cda1 (patch)
tree5e1a520a8826a9e135232c43fc1d2acb45d79cba /subsonic-android/src
parentef9ce9a9c7984ab9b34e826132f4a2e21ada98f9 (diff)
downloaddsub-6612b1049231374d69d4cdd3fe9b52571048cda1.tar.gz
dsub-6612b1049231374d69d4cdd3fe9b52571048cda1.tar.bz2
dsub-6612b1049231374d69d4cdd3fe9b52571048cda1.zip
Release the visualizer object when not being used
Diffstat (limited to 'subsonic-android/src')
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java9
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/audiofx/VisualizerController.java17
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/view/VisualizerView.java11
3 files changed, 30 insertions, 7 deletions
diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java
index f6017a54..05591818 100644
--- a/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java
+++ b/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java
@@ -285,9 +285,14 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi
public void onClick(View view) {
boolean active = !visualizerView.isActive();
visualizerView.setActive(active);
- getDownloadService().setShowVisualization(visualizerView.isActive());
+ boolean isActive = visualizerView.isActive();
+ getDownloadService().setShowVisualization(isActive);
updateButtons();
- Util.toast(DownloadActivity.this, active ? R.string.download_visualizer_on : R.string.download_visualizer_off);
+ if(active == isActive) {
+ Util.toast(DownloadActivity.this, active ? R.string.download_visualizer_on : R.string.download_visualizer_off);
+ } else {
+ Util.toast(DownloadActivity.this, "Failed to start visualizer. Try restarting.");
+ }
setControlsVisible(true);
}
});
diff --git a/subsonic-android/src/github/daneren2005/dsub/audiofx/VisualizerController.java b/subsonic-android/src/github/daneren2005/dsub/audiofx/VisualizerController.java
index dc46ee18..b32245f4 100644
--- a/subsonic-android/src/github/daneren2005/dsub/audiofx/VisualizerController.java
+++ b/subsonic-android/src/github/daneren2005/dsub/audiofx/VisualizerController.java
@@ -36,6 +36,8 @@ public class VisualizerController {
private final Context context;
private Visualizer visualizer;
+ private boolean released = false;
+ private int audioSessionId = 0;
// Class initialization fails when this throws an exception.
static {
@@ -54,10 +56,10 @@ public class VisualizerController {
}
public VisualizerController(Context context, MediaPlayer mediaPlayer) {
- Log.d(TAG, "Setting up visualizer");
this.context = context;
try {
- visualizer = new Visualizer(mediaPlayer.getAudioSessionId());
+ audioSessionId = mediaPlayer.getAudioSessionId();
+ visualizer = new Visualizer(audioSessionId);
} catch (Throwable x) {
Log.w(TAG, "Failed to create visualizer.", x);
}
@@ -81,10 +83,21 @@ public class VisualizerController {
public void release() {
if (isAvailable()) {
visualizer.release();
+ released = true;
}
}
public Visualizer getVisualizer() {
+ if(released) {
+ released = false;
+ try {
+ visualizer = new Visualizer(audioSessionId);
+ } catch (Throwable x) {
+ visualizer = null;
+ Log.w(TAG, "Failed to create visualizer.", x);
+ }
+ }
+
return visualizer;
}
}
diff --git a/subsonic-android/src/github/daneren2005/dsub/view/VisualizerView.java b/subsonic-android/src/github/daneren2005/dsub/view/VisualizerView.java
index 19097885..53ebc2ec 100644
--- a/subsonic-android/src/github/daneren2005/dsub/view/VisualizerView.java
+++ b/subsonic-android/src/github/daneren2005/dsub/view/VisualizerView.java
@@ -61,8 +61,10 @@ public class VisualizerView extends View {
public void setActive(boolean active) {
this.active = active;
- Visualizer visualizer = getVizualiser();
+ VisualizerController visualizerController = getVizualiser();
+ Visualizer visualizer = visualizerController == null ? null : visualizerController.getVisualizer();
if (visualizer == null) {
+ this.active = false;
return;
}
@@ -83,13 +85,16 @@ public class VisualizerView extends View {
}
visualizer.setEnabled(active);
+ if(!active) {
+ visualizerController.release();
+ }
invalidate();
}
- private Visualizer getVizualiser() {
+ private VisualizerController getVizualiser() {
DownloadService downloadService = DownloadServiceImpl.getInstance();
VisualizerController visualizerController = downloadService == null ? null : downloadService.getVisualizerController();
- return visualizerController == null ? null : visualizerController.getVisualizer();
+ return visualizerController;
}
private void updateVisualizer(byte[] waveform) {