Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a07fb4e authored by Pawin Vongmasa's avatar Pawin Vongmasa
Browse files

MediaCodec: Release lock before calling onFrameRendered()

Test: atest CtsMediaTestCases -- \
--module-arg CtsMediaTestCases:size:small

Bug: 143672592
Change-Id: I4fb55eb8a90913544a793097c977fee539e09776
parent a5e26c95
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -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");
                        OnFrameRenderedListener onFrameRenderedListener;
                        synchronized (mListenerLock) {
                            onFrameRenderedListener = mOnFrameRenderedListener;
                        }
                        if (mediaTimeUs == null || systemNano == null
                                    || mOnFrameRenderedListener == null) {
                                || onFrameRenderedListener == null) {
                            break;
                        }
                            mOnFrameRenderedListener.onFrameRendered(
                        onFrameRenderedListener.onFrameRendered(
                                mCodec, (long)mediaTimeUs, (long)systemNano);
                    }
                    break;
                    }
                default:
                {
                    break;