From 9e8d9aca07913b3e8a017614088048c721a82ccb Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Fri, 21 Nov 2014 14:04:33 -0800 Subject: [PATCH] Correctly iterate through MediaProjection callbacks. Bug: 18393320 Change-Id: I81e46b516e4e94b04a1b8363805b8bb633cb822e --- .../android/media/projection/MediaProjection.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/projection/MediaProjection.java b/media/java/android/media/projection/MediaProjection.java index e6dadf91d85b4..3f942899a2958 100644 --- a/media/java/android/media/projection/MediaProjection.java +++ b/media/java/android/media/projection/MediaProjection.java @@ -76,6 +76,9 @@ public final class MediaProjection { if (callback == null) { throw new IllegalArgumentException("callback should not be null"); } + if (handler == null) { + handler = new Handler(); + } mCallbacks.put(callback, new CallbackRecord(callback, handler)); } @@ -183,16 +186,15 @@ public final class MediaProjection { private final class MediaProjectionCallback extends IMediaProjectionCallback.Stub { @Override public void onStop() { - final int N = mCallbacks.size(); - for (int i = 0; i < N; i++) { - mCallbacks.get(i).onStop(); + for (CallbackRecord cbr : mCallbacks.values()) { + cbr.onStop(); } } } private final static class CallbackRecord { - private Callback mCallback; - private Handler mHandler; + private final Callback mCallback; + private final Handler mHandler; public CallbackRecord(Callback callback, Handler handler) { mCallback = callback;