From fd614c2149c7985bd83df809df71d0d60e5a8f74 Mon Sep 17 00:00:00 2001 From: henrika Date: Tue, 17 Nov 2015 04:28:26 -0800 Subject: [PATCH] Adding thread timeout for audio recorer thread in Java BUG=NONE Review URL: https://codereview.webrtc.org/1444313002 Cr-Commit-Position: refs/heads/master@{#10671} --- talk/libjingle.gyp | 2 +- .../java/src}/org/webrtc/ThreadUtils.java | 31 +++++-------------- .../webrtc/voiceengine/WebRtcAudioRecord.java | 9 ++---- 3 files changed, 11 insertions(+), 31 deletions(-) rename {talk/app/webrtc/java/android => webrtc/base/java/src}/org/webrtc/ThreadUtils.java (78%) diff --git a/talk/libjingle.gyp b/talk/libjingle.gyp index d86361014e..9710b758b8 100755 --- a/talk/libjingle.gyp +++ b/talk/libjingle.gyp @@ -158,11 +158,11 @@ 'app/webrtc/java/android/org/webrtc/RendererCommon.java', 'app/webrtc/java/android/org/webrtc/SurfaceTextureHelper.java', 'app/webrtc/java/android/org/webrtc/SurfaceViewRenderer.java', - 'app/webrtc/java/android/org/webrtc/ThreadUtils.java', 'app/webrtc/java/android/org/webrtc/VideoCapturerAndroid.java', 'app/webrtc/java/android/org/webrtc/VideoRendererGui.java', 'app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java', 'app/webrtc/java/src/org/webrtc/MediaCodecVideoEncoder.java', + '<(webrtc_base_dir)/java/src/org/webrtc/ThreadUtils.java', '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViEAndroidGLES20.java', '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViERenderer.java', '<(webrtc_modules_dir)/video_render/android/java/src/org/webrtc/videoengine/ViESurfaceRenderer.java', diff --git a/talk/app/webrtc/java/android/org/webrtc/ThreadUtils.java b/webrtc/base/java/src/org/webrtc/ThreadUtils.java similarity index 78% rename from talk/app/webrtc/java/android/org/webrtc/ThreadUtils.java rename to webrtc/base/java/src/org/webrtc/ThreadUtils.java index bd4fa44b9a..3536fec658 100644 --- a/talk/app/webrtc/java/android/org/webrtc/ThreadUtils.java +++ b/webrtc/base/java/src/org/webrtc/ThreadUtils.java @@ -1,28 +1,11 @@ /* - * libjingle - * Copyright 2015 Google Inc. + * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. */ package org.webrtc; @@ -34,7 +17,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -final class ThreadUtils { +public final class ThreadUtils { /** * Utility class to be used for checking that a method is called on the correct thread. */ diff --git a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java index ff77635843..a6ae9fc480 100644 --- a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java +++ b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java @@ -23,6 +23,7 @@ import android.os.Process; import android.os.SystemClock; import org.webrtc.Logging; +import org.webrtc.ThreadUtils; class WebRtcAudioRecord { private static final boolean DEBUG = false; @@ -103,12 +104,8 @@ class WebRtcAudioRecord { public void joinThread() { keepAlive = false; - while (isAlive()) { - try { - join(); - } catch (InterruptedException e) { - // Ignore. - } + if (!ThreadUtils.joinUninterruptibly(this, 1000)) { + Logging.e(TAG, "Timeout in WebRtcAudioRecord.joinThread()"); } } }