diff options
author | Pawin Vongmasa <pawin@google.com> | 2019-10-31 21:58:14 -0700 |
---|---|---|
committer | Pawin Vongmasa <pawin@google.com> | 2019-11-07 15:54:54 -0800 |
commit | 5a07fb4e59196b499dbea4d07965e1e0c997749f (patch) | |
tree | 7646964a151278eb2d459a85a8b81b635d104588 /media/java/android/media/MediaCodec.java | |
parent | a5e26c955b336e7fef822714b92cfd68795c8639 (diff) |
MediaCodec: Release lock before calling onFrameRendered()
Test: atest CtsMediaTestCases -- \
--module-arg CtsMediaTestCases:size:small
Bug: 143672592
Change-Id: I4fb55eb8a90913544a793097c977fee539e09776
Diffstat (limited to 'media/java/android/media/MediaCodec.java')
-rw-r--r-- | media/java/android/media/MediaCodec.java | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 510ee442f852..c9d79784004c 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -1702,20 +1702,22 @@ final public class MediaCodec { break; } case EVENT_FRAME_RENDERED: - synchronized (mListenerLock) { - Map<String, Object> map = (Map<String, Object>)msg.obj; - for (int i = 0; ; ++i) { - Object mediaTimeUs = map.get(i + "-media-time-us"); - Object systemNano = map.get(i + "-system-nano"); - if (mediaTimeUs == null || systemNano == null - || mOnFrameRenderedListener == null) { - break; - } - mOnFrameRenderedListener.onFrameRendered( - mCodec, (long)mediaTimeUs, (long)systemNano); + Map<String, Object> map = (Map<String, Object>)msg.obj; + for (int i = 0; ; ++i) { + Object mediaTimeUs = map.get(i + "-media-time-us"); + Object systemNano = map.get(i + "-system-nano"); + OnFrameRenderedListener onFrameRenderedListener; + synchronized (mListenerLock) { + onFrameRenderedListener = mOnFrameRenderedListener; } - break; + if (mediaTimeUs == null || systemNano == null + || onFrameRenderedListener == null) { + break; + } + onFrameRenderedListener.onFrameRendered( + mCodec, (long)mediaTimeUs, (long)systemNano); } + break; default: { break; |