Bug 1440255 - Backout
bug 1420585 deadlock wallpaper fix r?dminor
MozReview-Commit-ID: DurGH2RmXQH
--- 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
@@ -267,23 +267,21 @@ 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);
- // 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.
+ if (camera != null) {
+ Exchanger<Boolean> resultDropper = new Exchanger<Boolean>();
+ stopCaptureOnCameraThread(resultDropper);
+ exchange(resultDropper, false);
+ }
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");