am ee512f51: am d9be933f: am 51ff1c93: am f9122232: am a78601dc: Merge "Ensure metadata bundles are unparceled before making them available" into lmp-dev
* commit 'ee512f515fd0f7e36c5f9b78b8645d114dfc03db': Ensure metadata bundles are unparceled before making them available
This commit is contained in:
@@ -629,12 +629,12 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
|
||||
|
||||
private PlaybackState getStateWithUpdatedPosition() {
|
||||
PlaybackState state;
|
||||
long duration = -1;
|
||||
synchronized (mLock) {
|
||||
state = mPlaybackState;
|
||||
}
|
||||
long duration = -1;
|
||||
if (mMetadata != null && mMetadata.containsKey(MediaMetadata.METADATA_KEY_DURATION)) {
|
||||
duration = mMetadata.getLong(MediaMetadata.METADATA_KEY_DURATION);
|
||||
if (mMetadata != null && mMetadata.containsKey(MediaMetadata.METADATA_KEY_DURATION)) {
|
||||
duration = mMetadata.getLong(MediaMetadata.METADATA_KEY_DURATION);
|
||||
}
|
||||
}
|
||||
PlaybackState result = null;
|
||||
if (state != null) {
|
||||
@@ -735,10 +735,14 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
|
||||
|
||||
@Override
|
||||
public void setMetadata(MediaMetadata metadata) {
|
||||
// Make a copy of the metadata as the underlying bundle may be
|
||||
// modified on this thread.
|
||||
synchronized (mLock) {
|
||||
mMetadata = metadata == null ? null : new MediaMetadata.Builder(metadata).build();
|
||||
MediaMetadata temp = metadata == null ? null : new MediaMetadata.Builder(metadata)
|
||||
.build();
|
||||
// This is to guarantee that the underlying bundle is unparceled
|
||||
// before we set it to prevent concurrent reads from throwing an
|
||||
// exception
|
||||
temp.size();
|
||||
mMetadata = temp;
|
||||
}
|
||||
mHandler.post(MessageHandler.MSG_UPDATE_METADATA);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user