From 607f464b16e08e70202e45dd1f61e1cd4c0ce1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20Kalliom=C3=A4ki?= Date: Tue, 30 Jan 2018 14:17:56 +0100 Subject: [PATCH] Remove ThreadUtils.waitUninterruptibly. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This method is an anti-pattern. Removes usage of the method from CameraCapturer and deletes it. Bug: webrtc:8456 Change-Id: I8a70ce968af412fa6e6b9308a9e05d6a8a1ba05d Reviewed-on: https://webrtc-review.googlesource.com/46140 Commit-Queue: Sami Kalliomäki Reviewed-by: Anders Carlsson Cr-Commit-Position: refs/heads/master@{#21808} --- rtc_base/java/src/org/webrtc/ThreadUtils.java | 11 ----------- sdk/android/src/java/org/webrtc/CameraCapturer.java | 8 +++++++- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/rtc_base/java/src/org/webrtc/ThreadUtils.java b/rtc_base/java/src/org/webrtc/ThreadUtils.java index f7c7b81a78..3cc80d39ca 100644 --- a/rtc_base/java/src/org/webrtc/ThreadUtils.java +++ b/rtc_base/java/src/org/webrtc/ThreadUtils.java @@ -143,17 +143,6 @@ public class ThreadUtils { return result; } - // TODO(sakal): This method is broken. It should be removed: crbug.com/webrtc/8456 - @SuppressWarnings("WaitNotInLoop") - public static void waitUninterruptibly(final Object object) { - executeUninterruptibly(new BlockingOperation() { - @Override - public void run() throws InterruptedException { - object.wait(); - } - }); - } - /** * Post |callable| to |handler| and wait for the result. */ diff --git a/sdk/android/src/java/org/webrtc/CameraCapturer.java b/sdk/android/src/java/org/webrtc/CameraCapturer.java index 3b442fb163..20596beb8b 100644 --- a/sdk/android/src/java/org/webrtc/CameraCapturer.java +++ b/sdk/android/src/java/org/webrtc/CameraCapturer.java @@ -350,7 +350,13 @@ abstract class CameraCapturer implements CameraVideoCapturer { synchronized (stateLock) { while (sessionOpening) { Logging.d(TAG, "Stop capture: Waiting for session to open"); - ThreadUtils.waitUninterruptibly(stateLock); + try { + stateLock.wait(); + } catch (InterruptedException e) { + Logging.w(TAG, "Stop capture interrupted while waiting for the session to open."); + Thread.currentThread().interrupt(); + return; + } } if (currentSession != null) {