Merge "Ensure MediaSession2Record is initialized before used" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
960f56669c
@@ -56,13 +56,17 @@ public class MediaSession2Record implements MediaSessionRecordImpl {
|
|||||||
|
|
||||||
public MediaSession2Record(Session2Token sessionToken, MediaSessionService service,
|
public MediaSession2Record(Session2Token sessionToken, MediaSessionService service,
|
||||||
Looper handlerLooper, int policies) {
|
Looper handlerLooper, int policies) {
|
||||||
mSessionToken = sessionToken;
|
// The lock is required to prevent `Controller2Callback` from using partially initialized
|
||||||
mService = service;
|
// `MediaSession2Record.this`.
|
||||||
mHandlerExecutor = new HandlerExecutor(new Handler(handlerLooper));
|
synchronized (mLock) {
|
||||||
mController = new MediaController2.Builder(service.getContext(), sessionToken)
|
mSessionToken = sessionToken;
|
||||||
.setControllerCallback(mHandlerExecutor, new Controller2Callback())
|
mService = service;
|
||||||
.build();
|
mHandlerExecutor = new HandlerExecutor(new Handler(handlerLooper));
|
||||||
mPolicies = policies;
|
mController = new MediaController2.Builder(service.getContext(), sessionToken)
|
||||||
|
.setControllerCallback(mHandlerExecutor, new Controller2Callback())
|
||||||
|
.build();
|
||||||
|
mPolicies = policies;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -176,10 +180,12 @@ public class MediaSession2Record implements MediaSessionRecordImpl {
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "connected to " + mSessionToken + ", allowed=" + allowedCommands);
|
Log.d(TAG, "connected to " + mSessionToken + ", allowed=" + allowedCommands);
|
||||||
}
|
}
|
||||||
|
MediaSessionService service;
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
mIsConnected = true;
|
mIsConnected = true;
|
||||||
|
service = mService;
|
||||||
}
|
}
|
||||||
mService.onSessionActiveStateChanged(MediaSession2Record.this);
|
service.onSessionActiveStateChanged(MediaSession2Record.this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -187,10 +193,12 @@ public class MediaSession2Record implements MediaSessionRecordImpl {
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "disconnected from " + mSessionToken);
|
Log.d(TAG, "disconnected from " + mSessionToken);
|
||||||
}
|
}
|
||||||
|
MediaSessionService service;
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
mIsConnected = false;
|
mIsConnected = false;
|
||||||
|
service = mService;
|
||||||
}
|
}
|
||||||
mService.onSessionDied(MediaSession2Record.this);
|
service.onSessionDied(MediaSession2Record.this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -199,7 +207,11 @@ public class MediaSession2Record implements MediaSessionRecordImpl {
|
|||||||
Log.d(TAG, "playback active changed, " + mSessionToken + ", active="
|
Log.d(TAG, "playback active changed, " + mSessionToken + ", active="
|
||||||
+ playbackActive);
|
+ playbackActive);
|
||||||
}
|
}
|
||||||
mService.onSessionPlaybackStateChanged(MediaSession2Record.this, playbackActive);
|
MediaSessionService service;
|
||||||
|
synchronized (mLock) {
|
||||||
|
service = mService;
|
||||||
|
}
|
||||||
|
service.onSessionPlaybackStateChanged(MediaSession2Record.this, playbackActive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user