Bug 1420585 - remove unnecessary stopCapture which causes deadlock. r?jib
MozReview-Commit-ID: F8xcOSPihDN
--- a/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureAndroid.java
+++ b/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureAndroid.java
@@ -243,21 +243,23 @@ public class VideoCaptureAndroid impleme
averageDurationMs = 1000000.0f / (max_mfps / frameDropRatio);
camera.startPreview();
exchange(result, true);
return;
} catch (RuntimeException e) {
error = e;
}
Log.e(TAG, "startCapture failed", error);
- if (camera != null) {
- Exchanger<Boolean> resultDropper = new Exchanger<Boolean>();
- stopCaptureOnCameraThread(resultDropper);
- exchange(resultDropper, false);
- }
+ // For some devices, camera.setParameters(parameters) would throw
+ // an exception when a specific resolution is set. Originally,
+ // stopCaptureOnCameraThread() is called here to clear up the state.
+ // However, stopCaptureOnCameraThread(), which uses Exchanger to
+ // synchronize and swap data with MediaManager thread, is supposed to be
+ // called by MediaManager thread like we did at stopCapture(). Calling
+ // this function directly in CameraThread will cause deadlock.
exchange(result, false);
return;
}
// Called by native code. Returns true when camera is known to be stopped.
@WebRTCJNITarget
private synchronized boolean stopCapture() {
Log.d(TAG, "stopCapture");