Check keepAlive before calling nativeDataIsRecording.

We're encountering a bug where audioRecord.read() can hang for long
enough that stopRecording() fails to join the recording thread (in two
seconds) and returns. In that case, JNI methods get unregistered and
when the recording thread calls nativeDataIsRecorded, it crashes when
it can't find the native method to call.

This version still isn't 100% safe, as the threading sequence still
technically allows for an ordering where (for some reason) the thread
fails to join after the final keepAlive check and long enough for all
the JNI methods to get unregistered, but that seems very unlikely.

BUG=b/64174142

Change-Id: Ie7432a70d0e53bace0885edf35e24bd3f6585399
Reviewed-on: https://chromium-review.googlesource.com/613501
Reviewed-by: Henrik Andreasson <henrika@webrtc.org>
Commit-Queue: Noah Richards <noahric@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#19358}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 1871a919447dd7be5d8d225d218ab09af49d49d2
1 file changed