From f3610614516b3e894848d40be16146533bc513c6 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Fri, 12 Jul 2019 17:29:33 -0700 Subject: [PATCH] audio record: fix getPortId() after release Some race condition can cause AudioRecordingMonitorImpl to call getPortId() on the client object after it has been released causing an exception to be thrown by the JNI. Test: Use audio Recorder app and check that no exception is thrown when recording stops Change-Id: I6cc1aee0a2ccae879e2cb5df7af757f33436d1f3 --- media/java/android/media/AudioRecord.java | 3 +++ media/java/android/media/MediaRecorder.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index ce9b07dd0c0ef..0254c9721019c 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -1788,6 +1788,9 @@ public class AudioRecord implements AudioRouting, MicrophoneDirection, * @hide */ public int getPortId() { + if (mNativeRecorderInJavaObj == 0) { + return 0; + } return native_getPortId(); } diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 63b22df129537..bc3de7484bf9f 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -1624,6 +1624,9 @@ public class MediaRecorder implements AudioRouting, * @hide */ public int getPortId() { + if (mNativeContext == 0) { + return 0; + } return native_getPortId(); }