summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajesh Yengisetty <rajesh@cyngn.com>2014-12-13 01:19:00 +0000
committerGerrit Code Review <gerrit@cyanogenmod.org>2014-12-13 01:19:00 +0000
commit78e67f2f296cbd0012012379cfc861d1bc4e05ef (patch)
tree13b4917cf39893cdc1ebc2d201a5e139f8c88b9f
parentc39e47d7f64598f301c1cda74fd3c143d2edd9f6 (diff)
parent42ed49a625ec08ec0b415923d74fe3c8f29875ff (diff)
downloadandroid_packages_apps_Eleven-78e67f2f296cbd0012012379cfc861d1bc4e05ef.tar.gz
android_packages_apps_Eleven-78e67f2f296cbd0012012379cfc861d1bc4e05ef.tar.bz2
android_packages_apps_Eleven-78e67f2f296cbd0012012379cfc861d1bc4e05ef.zip
Merge "Eleven: Fix crash when launching a song from file manager" into cm-12.0
-rw-r--r--src/com/cyanogenmod/eleven/MusicPlaybackService.java172
-rw-r--r--src/com/cyanogenmod/eleven/utils/SrtManager.java17
2 files changed, 94 insertions, 95 deletions
diff --git a/src/com/cyanogenmod/eleven/MusicPlaybackService.java b/src/com/cyanogenmod/eleven/MusicPlaybackService.java
index e6af28f..5b4d1fc 100644
--- a/src/com/cyanogenmod/eleven/MusicPlaybackService.java
+++ b/src/com/cyanogenmod/eleven/MusicPlaybackService.java
@@ -1089,7 +1089,7 @@ public class MusicPlaybackService extends Service {
return c;
}
- private void closeCursor() {
+ private synchronized void closeCursor() {
if (mCursor != null) {
mCursor.close();
mCursor = null;
@@ -2735,89 +2735,92 @@ public class MusicPlaybackService extends Service {
return;
}
- switch (msg.what) {
- case FADEDOWN:
- mCurrentVolume -= .05f;
- if (mCurrentVolume > .2f) {
- sendEmptyMessageDelayed(FADEDOWN, 10);
- } else {
- mCurrentVolume = .2f;
- }
- service.mPlayer.setVolume(mCurrentVolume);
- break;
- case FADEUP:
- mCurrentVolume += .01f;
- if (mCurrentVolume < 1.0f) {
- sendEmptyMessageDelayed(FADEUP, 10);
- } else {
- mCurrentVolume = 1.0f;
- }
- service.mPlayer.setVolume(mCurrentVolume);
- break;
- case SERVER_DIED:
- if (service.isPlaying()) {
- service.gotoNext(true);
- } else {
- service.openCurrentAndNext();
- }
- break;
- case TRACK_WENT_TO_NEXT:
- service.setAndRecordPlayPos(service.mNextPlayPos);
- service.setNextTrack();
- if (service.mCursor != null) {
- service.mCursor.close();
- }
- service.updateCursor(service.mPlaylist.get(service.mPlayPos).mId);
- service.notifyChange(META_CHANGED);
- service.updateNotification();
- break;
- case TRACK_ENDED:
- if (service.mRepeatMode == REPEAT_CURRENT) {
- service.seek(0);
- service.play();
- } else {
- service.gotoNext(false);
- }
- break;
- case LYRICS:
- service.mLyrics = (String) msg.obj;
- service.notifyChange(NEW_LYRICS);
- break;
- case RELEASE_WAKELOCK:
- service.mWakeLock.release();
- break;
- case FOCUSCHANGE:
- if (D) Log.d(TAG, "Received audio focus change event " + msg.arg1);
- switch (msg.arg1) {
- case AudioManager.AUDIOFOCUS_LOSS:
- case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
- if (service.isPlaying()) {
- service.mPausedByTransientLossOfFocus =
- msg.arg1 == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT;
- }
- service.pause();
- break;
- case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
- removeMessages(FADEUP);
- sendEmptyMessage(FADEDOWN);
- break;
- case AudioManager.AUDIOFOCUS_GAIN:
- if (!service.isPlaying()
- && service.mPausedByTransientLossOfFocus) {
- service.mPausedByTransientLossOfFocus = false;
- mCurrentVolume = 0f;
- service.mPlayer.setVolume(mCurrentVolume);
- service.play();
- } else {
- removeMessages(FADEDOWN);
- sendEmptyMessage(FADEUP);
- }
- break;
- default:
- }
- break;
- default:
- break;
+ synchronized (service) {
+ switch (msg.what) {
+ case FADEDOWN:
+ mCurrentVolume -= .05f;
+ if (mCurrentVolume > .2f) {
+ sendEmptyMessageDelayed(FADEDOWN, 10);
+ } else {
+ mCurrentVolume = .2f;
+ }
+ service.mPlayer.setVolume(mCurrentVolume);
+ break;
+ case FADEUP:
+ mCurrentVolume += .01f;
+ if (mCurrentVolume < 1.0f) {
+ sendEmptyMessageDelayed(FADEUP, 10);
+ } else {
+ mCurrentVolume = 1.0f;
+ }
+ service.mPlayer.setVolume(mCurrentVolume);
+ break;
+ case SERVER_DIED:
+ if (service.isPlaying()) {
+ service.gotoNext(true);
+ } else {
+ service.openCurrentAndNext();
+ }
+ break;
+ case TRACK_WENT_TO_NEXT:
+ service.setAndRecordPlayPos(service.mNextPlayPos);
+ service.setNextTrack();
+ if (service.mCursor != null) {
+ service.mCursor.close();
+ service.mCursor = null;
+ }
+ service.updateCursor(service.mPlaylist.get(service.mPlayPos).mId);
+ service.notifyChange(META_CHANGED);
+ service.updateNotification();
+ break;
+ case TRACK_ENDED:
+ if (service.mRepeatMode == REPEAT_CURRENT) {
+ service.seek(0);
+ service.play();
+ } else {
+ service.gotoNext(false);
+ }
+ break;
+ case LYRICS:
+ service.mLyrics = (String) msg.obj;
+ service.notifyChange(NEW_LYRICS);
+ break;
+ case RELEASE_WAKELOCK:
+ service.mWakeLock.release();
+ break;
+ case FOCUSCHANGE:
+ if (D) Log.d(TAG, "Received audio focus change event " + msg.arg1);
+ switch (msg.arg1) {
+ case AudioManager.AUDIOFOCUS_LOSS:
+ case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
+ if (service.isPlaying()) {
+ service.mPausedByTransientLossOfFocus =
+ msg.arg1 == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT;
+ }
+ service.pause();
+ break;
+ case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
+ removeMessages(FADEUP);
+ sendEmptyMessage(FADEDOWN);
+ break;
+ case AudioManager.AUDIOFOCUS_GAIN:
+ if (!service.isPlaying()
+ && service.mPausedByTransientLossOfFocus) {
+ service.mPausedByTransientLossOfFocus = false;
+ mCurrentVolume = 0f;
+ service.mPlayer.setVolume(mCurrentVolume);
+ service.play();
+ } else {
+ removeMessages(FADEDOWN);
+ sendEmptyMessage(FADEUP);
+ }
+ break;
+ default:
+ }
+ break;
+ default:
+ break;
+ }
}
}
}
@@ -3058,7 +3061,6 @@ public class MusicPlaybackService extends Service {
* Releases resources associated with this MediaPlayer object.
*/
public void release() {
- stop();
mCurrentMediaPlayer.release();
mSrtManager.release();
mSrtManager = null;
diff --git a/src/com/cyanogenmod/eleven/utils/SrtManager.java b/src/com/cyanogenmod/eleven/utils/SrtManager.java
index ca7e884..ffa33dd 100644
--- a/src/com/cyanogenmod/eleven/utils/SrtManager.java
+++ b/src/com/cyanogenmod/eleven/utils/SrtManager.java
@@ -61,16 +61,13 @@ public abstract class SrtManager implements Handler.Callback {
}
public synchronized void release() {
- reset();
- mHandlerThread.quit();
- mHandlerThread = null;
- }
-
- @Override
- protected void finalize() throws Throwable {
- super.finalize();
- mHandlerThread.quit();
- mHandlerThread = null;
+ if (mHandlerThread != null) {
+ mHandler.removeMessages(POST_TEXT_MSG);
+ mHandler.removeCallbacks(mLoader);
+ mHandler = null;
+ mHandlerThread.quit();
+ mHandlerThread = null;
+ }
}
public synchronized void initialize(final MediaPlayer player, final File f) {