From 3b116ad3d8687b20d1bce91f45c221eee449b363 Mon Sep 17 00:00:00 2001 From: henrika Date: Thu, 4 Jan 2018 10:13:55 +0100 Subject: [PATCH] Check keepAlive before calling nativeDataIsRecording (reland) Restores work done in https://chromium-review.googlesource.com/c/external/webrtc/+/613501 which was accidently removed. TBR=glaznev Bug: b/64174142 Change-Id: I518a5b10d0ece5fd93bae02811789edaf1d70456 Reviewed-on: https://webrtc-review.googlesource.com/37083 Commit-Queue: Henrik Andreassson Reviewed-by: Henrik Andreassson Cr-Commit-Position: refs/heads/master@{#21490} --- .../java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java b/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java index 737ce8d7dc..2b4ef1a003 100644 --- a/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java +++ b/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java @@ -106,7 +106,12 @@ public class WebRtcAudioRecord { byteBuffer.clear(); byteBuffer.put(emptyBytes); } - nativeDataIsRecorded(bytesRead, nativeAudioRecord); + // It's possible we've been shut down during the read, and stopRecording() tried and + // failed to join this thread. To be a bit safer, try to avoid calling any native methods + // in case they've been unregistered after stopRecording() returned. + if (keepAlive) { + nativeDataIsRecorded(bytesRead, nativeAudioRecord); + } } else { String errorMessage = "AudioRecord.read failed: " + bytesRead; Logging.e(TAG, errorMessage);