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

Commit e0ca3f38 authored by Jaewan Kim's avatar Jaewan Kim
Browse files

MediaSessionService: Keep media session list in one place

Test: Manual test
Change-Id: I954a3c6881ba415d3800ac1a2ce16b424d1a0f73
parent 80f42edf
Loading
Loading
Loading
Loading
+7 −13
Original line number Original line Diff line number Diff line
@@ -93,7 +93,6 @@ public class MediaSessionService extends SystemService implements Monitor {
    private final SessionManagerImpl mSessionManagerImpl;
    private final SessionManagerImpl mSessionManagerImpl;
    private final MediaSessionStack mPriorityStack;
    private final MediaSessionStack mPriorityStack;


    private final ArrayList<MediaSessionRecord> mAllSessions = new ArrayList<MediaSessionRecord>();
    private final SparseArray<UserRecord> mUserRecords = new SparseArray<UserRecord>();
    private final SparseArray<UserRecord> mUserRecords = new SparseArray<UserRecord>();
    private final ArrayList<SessionsListenerRecord> mSessionsListeners
    private final ArrayList<SessionsListenerRecord> mSessionsListeners
            = new ArrayList<SessionsListenerRecord>();
            = new ArrayList<SessionsListenerRecord>();
@@ -145,7 +144,8 @@ public class MediaSessionService extends SystemService implements Monitor {


    public void updateSession(MediaSessionRecord record) {
    public void updateSession(MediaSessionRecord record) {
        synchronized (mLock) {
        synchronized (mLock) {
            if (!mAllSessions.contains(record)) {
            UserRecord user = mUserRecords.get(record.getUserId());
            if (user == null || !user.mSessions.contains(record)) {
                Log.d(TAG, "Unknown session updated. Ignoring.");
                Log.d(TAG, "Unknown session updated. Ignoring.");
                return;
                return;
            }
            }
@@ -171,7 +171,8 @@ public class MediaSessionService extends SystemService implements Monitor {
    public void onSessionPlaystateChange(MediaSessionRecord record, int oldState, int newState) {
    public void onSessionPlaystateChange(MediaSessionRecord record, int oldState, int newState) {
        boolean updateSessions = false;
        boolean updateSessions = false;
        synchronized (mLock) {
        synchronized (mLock) {
            if (!mAllSessions.contains(record)) {
            UserRecord user = mUserRecords.get(record.getUserId());
            if (user == null || !user.mSessions.contains(record)) {
                Log.d(TAG, "Unknown session changed playback state. Ignoring.");
                Log.d(TAG, "Unknown session changed playback state. Ignoring.");
                return;
                return;
            }
            }
@@ -184,7 +185,8 @@ public class MediaSessionService extends SystemService implements Monitor {


    public void onSessionPlaybackTypeChanged(MediaSessionRecord record) {
    public void onSessionPlaybackTypeChanged(MediaSessionRecord record) {
        synchronized (mLock) {
        synchronized (mLock) {
            if (!mAllSessions.contains(record)) {
            UserRecord user = mUserRecords.get(record.getUserId());
            if (user == null || !user.mSessions.contains(record)) {
                Log.d(TAG, "Unknown session changed playback type. Ignoring.");
                Log.d(TAG, "Unknown session changed playback type. Ignoring.");
                return;
                return;
            }
            }
@@ -318,7 +320,6 @@ public class MediaSessionService extends SystemService implements Monitor {
        }
        }


        mPriorityStack.removeSession(session);
        mPriorityStack.removeSession(session);
        mAllSessions.remove(session);


        try {
        try {
            session.getCallback().asBinder().unlinkToDeath(session, 0);
            session.getCallback().asBinder().unlinkToDeath(session, 0);
@@ -455,7 +456,6 @@ public class MediaSessionService extends SystemService implements Monitor {
            throw new RuntimeException("Media Session owner died prematurely.", e);
            throw new RuntimeException("Media Session owner died prematurely.", e);
        }
        }


        mAllSessions.add(session);
        mPriorityStack.addSession(session, mCurrentUserIdList.contains(userId));
        mPriorityStack.addSession(session, mCurrentUserIdList.contains(userId));
        user.addSessionLocked(session);
        user.addSessionLocked(session);


@@ -1087,16 +1087,10 @@ public class MediaSessionService extends SystemService implements Monitor {


            synchronized (mLock) {
            synchronized (mLock) {
                pw.println(mSessionsListeners.size() + " sessions listeners.");
                pw.println(mSessionsListeners.size() + " sessions listeners.");
                int count = mAllSessions.size();
                pw.println(count + " Sessions:");
                for (int i = 0; i < count; i++) {
                    mAllSessions.get(i).dump(pw, "");
                    pw.println();
                }
                mPriorityStack.dump(pw, "");
                mPriorityStack.dump(pw, "");


                pw.println("User Records:");
                pw.println("User Records:");
                count = mUserRecords.size();
                int count = mUserRecords.size();
                for (int i = 0; i < count; i++) {
                for (int i = 0; i < count; i++) {
                    UserRecord user = mUserRecords.get(mUserRecords.keyAt(i));
                    UserRecord user = mUserRecords.get(mUserRecords.keyAt(i));
                    user.dumpLocked(pw, "");
                    user.dumpLocked(pw, "");