diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 96391ac62530c..074d891a99740 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -647,18 +647,17 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR if (mDestroyed) { return; } - toSend = new ArrayList<>(); - if (mQueue != null) { - toSend.ensureCapacity(mQueue.size()); - toSend.addAll(mQueue); - } + toSend = mQueue == null ? null : new ArrayList<>(mQueue); } Collection deadCallbackHolders = null; for (ISessionControllerCallbackHolder holder : mControllerCallbackHolders) { - ParceledListSlice parcelableQueue = new ParceledListSlice<>(toSend); - // Limit the size of initial Parcel to prevent binder buffer overflow - // as onQueueChanged is an async binder call. - parcelableQueue.setInlineCountLimit(1); + ParceledListSlice parcelableQueue = null; + if (toSend != null) { + parcelableQueue = new ParceledListSlice<>(toSend); + // Limit the size of initial Parcel to prevent binder buffer overflow + // as onQueueChanged is an async binder call. + parcelableQueue.setInlineCountLimit(1); + } try { holder.mCallback.onQueueChanged(parcelableQueue);