From 5a3ef42422ea542fce1d8d1d5b0fbf61d4a570a6 Mon Sep 17 00:00:00 2001 From: Terry Heo Date: Fri, 17 Jul 2015 16:03:28 +0900 Subject: [PATCH] TIF: Use copied track list for onTracksChanged() callback In notifyTracksChanged(), the calling onTracksChanged() could be delayed. To prevent race condition on tracks, we should use the copy of tracks. Bug: 22436933 Change-Id: I0c595df9d06d5f7bda4a9f8c21a661f7aa7db71f --- media/java/android/media/tv/TvInputService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java index 35037bbe18f4b..86e85605de5c2 100644 --- a/media/java/android/media/tv/TvInputService.java +++ b/media/java/android/media/tv/TvInputService.java @@ -385,13 +385,14 @@ public abstract class TvInputService extends Service { trackIdSet.clear(); // TODO: Validate the track list. + final List tracksCopy = new ArrayList<>(tracks); executeOrPostRunnable(new Runnable() { @Override public void run() { try { if (DEBUG) Log.d(TAG, "notifyTracksChanged"); if (mSessionCallback != null) { - mSessionCallback.onTracksChanged(tracks); + mSessionCallback.onTracksChanged(tracksCopy); } } catch (RemoteException e) { Log.w(TAG, "error in notifyTracksChanged", e);