Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b29553e5 authored by Bart Sears's avatar Bart Sears Committed by Android Git Automerger
Browse files

am b227cce3: Merge "Check MediaPlayer state, do not teardown() from UI thread." into ics-mr0

* commit 'b227cce3':
  Check MediaPlayer state, do not teardown() from UI thread.
parents 4b1415eb b227cce3
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -238,24 +238,27 @@ class HTML5Audio extends Handler
        switch (focusChange) {
        case AudioManager.AUDIOFOCUS_GAIN:
            // resume playback
            if (mMediaPlayer == null) resetMediaPlayer();
            else if (!mMediaPlayer.isPlaying()) mMediaPlayer.start();
            if (mMediaPlayer == null) {
                resetMediaPlayer();
            } else if (mState != ERROR && !mMediaPlayer.isPlaying()) {
                mMediaPlayer.start();
                mState = STARTED;
            }
            break;

        case AudioManager.AUDIOFOCUS_LOSS:
            // Lost focus for an unbounded amount of time: stop playback and release media player
            if (mMediaPlayer.isPlaying()) mMediaPlayer.stop();
            mMediaPlayer.release();
            mMediaPlayer = null;
            // Lost focus for an unbounded amount of time: stop playback.
            if (mState != ERROR && mMediaPlayer.isPlaying()) {
                mMediaPlayer.stop();
                mState = STOPPED;
            }
            break;

        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            // Lost focus for a short time, but we have to stop
            // playback. We don't release the media player because playback
            // is likely to resume
            if (mMediaPlayer.isPlaying()) mMediaPlayer.pause();
            // playback.
            if (mState != ERROR && mMediaPlayer.isPlaying()) pause();
            break;
        }
    }
@@ -273,10 +276,7 @@ class HTML5Audio extends Handler
            int result = audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC,
                AudioManager.AUDIOFOCUS_GAIN);

            if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                // could not get audio focus.
                teardown();
            } else {
            if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                mMediaPlayer.start();
                mState = STARTED;
            }
@@ -299,8 +299,13 @@ class HTML5Audio extends Handler
        }
    }

    /**
     * Called only over JNI when WebKit is happy to
     * destroy the media player.
     */
    private void teardown() {
        mMediaPlayer.release();
        mMediaPlayer = null;
        mState = ERROR;
        mNativePointer = 0;
    }