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

Commit 98e4aafc authored by Jaewan Kim's avatar Jaewan Kim
Browse files

Fix MediaSessionManager.Callback to be called with the media button session

MediaSessionManager.Callback have been called with the previous media
button session instead of latest media button session.

Bug: 37998705
Test: Manual test (Avrcp leaves log fo the addressed player changes)
Change-Id: I57b0b88f68c70047474d0f0e3d10eac527eb57bd
parent 972b2c23
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -673,7 +673,7 @@ public class MediaSessionService extends SystemService implements Monitor {
        public void onMediaButtonSessionChanged(MediaSessionRecord oldMediaButtonSession,
        public void onMediaButtonSessionChanged(MediaSessionRecord oldMediaButtonSession,
                MediaSessionRecord newMediaButtonSession) {
                MediaSessionRecord newMediaButtonSession) {
            if (DEBUG_KEY_EVENT) {
            if (DEBUG_KEY_EVENT) {
                Log.d(TAG, "Media button session will be changed to " + newMediaButtonSession);
                Log.d(TAG, "Media button session is changed to " + newMediaButtonSession);
            }
            }
            synchronized (mLock) {
            synchronized (mLock) {
                if (oldMediaButtonSession != null) {
                if (oldMediaButtonSession != null) {
+10 −9
Original line number Original line Diff line number Diff line
@@ -124,9 +124,7 @@ class MediaSessionStack {
            // When the media button session is removed, nullify the media button session and do not
            // When the media button session is removed, nullify the media button session and do not
            // search for the alternative media session within the app. It's because the alternative
            // search for the alternative media session within the app. It's because the alternative
            // media session might be a dummy which isn't able to handle the media key events.
            // media session might be a dummy which isn't able to handle the media key events.
            mOnMediaButtonSessionChangedListener.onMediaButtonSessionChanged(
            updateMediaButtonSession(null);
                    mMediaButtonSession, null);
            mMediaButtonSession = null;
        }
        }
        clearCache(record.getUserId());
        clearCache(record.getUserId());
    }
    }
@@ -163,9 +161,7 @@ class MediaSessionStack {
            MediaSessionRecord newMediaButtonSession =
            MediaSessionRecord newMediaButtonSession =
                    findMediaButtonSession(mMediaButtonSession.getUid());
                    findMediaButtonSession(mMediaButtonSession.getUid());
            if (newMediaButtonSession != mMediaButtonSession) {
            if (newMediaButtonSession != mMediaButtonSession) {
                mOnMediaButtonSessionChangedListener.onMediaButtonSessionChanged(
                updateMediaButtonSession(newMediaButtonSession);
                        mMediaButtonSession, newMediaButtonSession);
                mMediaButtonSession = newMediaButtonSession;
            }
            }
        }
        }
    }
    }
@@ -199,9 +195,7 @@ class MediaSessionStack {
                // Found the media button session.
                // Found the media button session.
                mAudioPlaybackMonitor.cleanUpAudioPlaybackUids(mediaButtonSession.getUid());
                mAudioPlaybackMonitor.cleanUpAudioPlaybackUids(mediaButtonSession.getUid());
                if (mMediaButtonSession != mediaButtonSession) {
                if (mMediaButtonSession != mediaButtonSession) {
                    mOnMediaButtonSessionChangedListener.onMediaButtonSessionChanged(
                    updateMediaButtonSession(mediaButtonSession);
                            mMediaButtonSession, mediaButtonSession);
                    mMediaButtonSession = mediaButtonSession;
                }
                }
                return;
                return;
            }
            }
@@ -262,6 +256,13 @@ class MediaSessionStack {
        return mMediaButtonSession;
        return mMediaButtonSession;
    }
    }


    private void updateMediaButtonSession(MediaSessionRecord newMediaButtonSession) {
        MediaSessionRecord oldMediaButtonSession = mMediaButtonSession;
        mMediaButtonSession = newMediaButtonSession;
        mOnMediaButtonSessionChangedListener.onMediaButtonSessionChanged(
                oldMediaButtonSession, newMediaButtonSession);
    }

    public MediaSessionRecord getDefaultVolumeSession() {
    public MediaSessionRecord getDefaultVolumeSession() {
        if (mCachedVolumeDefault != null) {
        if (mCachedVolumeDefault != null) {
            return mCachedVolumeDefault;
            return mCachedVolumeDefault;