summaryrefslogtreecommitdiff
path: root/media/java/android/media/MediaCodec.java
diff options
context:
space:
mode:
authorPawin Vongmasa <pawin@google.com>2019-10-31 21:58:14 -0700
committerPawin Vongmasa <pawin@google.com>2019-11-07 15:54:54 -0800
commit5a07fb4e59196b499dbea4d07965e1e0c997749f (patch)
tree7646964a151278eb2d459a85a8b81b635d104588 /media/java/android/media/MediaCodec.java
parenta5e26c955b336e7fef822714b92cfd68795c8639 (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.java26
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;