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

Commit 374b6165 authored by Marie Janssen's avatar Marie Janssen Committed by Gerrit Code Review
Browse files

Merge "Fix AVRCP crash, position and state tracking"

parents d0e08e83 a9897408
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -147,6 +147,8 @@ public final class Avrcp {
        mSongLengthMs = 0L;
        mPlaybackIntervalMs = 0L;
        mPlayPosChangedNT = NOTIFICATION_TYPE_CHANGED;
        mNextPosMs = -1;
        mPrevPosMs = -1;
        mFeatures = 0;
        mRemoteVolume = -1;
        mInitialRemoteVolume = -1;
@@ -259,12 +261,10 @@ public final class Avrcp {
        mMediaController = controller;
        if (mMediaController == null) {
            updateMetadata(null);
            updatePlaybackState(null);
            return;
        }
        mMediaController.registerCallback(mMediaControllerCb, mHandler);
        updateMetadata(mMediaController.getMetadata());
        updatePlaybackState(mMediaController.getPlaybackState());
    }

    /** Handles Avrcp messages. */
@@ -633,7 +633,6 @@ public final class Avrcp {
                         PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f).build();
        }

        int oldPlayStatus = convertPlayStateToPlayStatus(mCurrentPlayState);
        int newPlayStatus = convertPlayStateToPlayStatus(state);

        mCurrentPlayState = state;
@@ -641,7 +640,7 @@ public final class Avrcp {

        sendPlayPosNotificationRsp(false);

        if ((mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) && (oldPlayStatus != newPlayStatus)) {
        if (mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) {
            mPlayStatusChangedNT = NOTIFICATION_TYPE_CHANGED;
            registerNotificationRspPlayStatusNative(mPlayStatusChangedNT, newPlayStatus);
        }
@@ -771,8 +770,13 @@ public final class Avrcp {
            Log.v(TAG, "MediaAttributes Changed to " + mMediaAttributes.toString());
            mTrackNumber++;

            // Update the play state, which sends a notification if needed.
            // Update the play state, which sends play state and play position
            // notifications if needed.
            if (mMediaController != null) {
              updatePlaybackState(mMediaController.getPlaybackState());
            } else {
              updatePlaybackState(null);
            }

            if (mTrackChangedNT == NOTIFICATION_TYPE_INTERIM) {
                mTrackChangedNT = NOTIFICATION_TYPE_CHANGED;
@@ -897,7 +901,7 @@ public final class Avrcp {
            return SystemClock.elapsedRealtime() - mLastStateUpdate + mCurrentPlayState.getPosition();
        }

        return -1L;
        return mCurrentPlayState.getPosition();
    }

    private int convertPlayStateToPlayStatus(PlaybackState state) {