| Index: webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| diff --git a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| index b8ab1a8c5ea6223ce46aebf7dae8a43e8fd21241..93e623e4bd7dd35eaab39ddb6166db38184106e1 100644
|
| --- a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| +++ b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java
|
| @@ -467,10 +467,8 @@ public class VideoCapturerAndroid implements
|
| error = e;
|
| }
|
| Logging.e(TAG, "startCapture failed", error);
|
| - if (camera != null) {
|
| - // Make sure the camera is released.
|
| - stopCaptureOnCameraThread();
|
| - }
|
| + // Make sure the camera is released.
|
| + stopCaptureOnCameraThread();
|
| synchronized (handlerLock) {
|
| // Remove all pending Runnables posted from |this|.
|
| cameraThreadHandler.removeCallbacksAndMessages(this /* token */);
|
| @@ -607,20 +605,28 @@ public class VideoCapturerAndroid implements
|
| private void stopCaptureOnCameraThread() {
|
| checkIsOnCameraThread();
|
| Logging.d(TAG, "stopCaptureOnCameraThread");
|
| + // Note that the camera might still not be started here if startCaptureOnCameraThread failed
|
| + // and we posted a retry.
|
|
|
| // Make sure onTextureFrameAvailable() is not called anymore.
|
| - surfaceHelper.stopListening();
|
| + if (surfaceHelper != null) {
|
| + surfaceHelper.stopListening();
|
| + }
|
| cameraThreadHandler.removeCallbacks(cameraObserver);
|
| cameraStatistics.getAndResetFrameCount();
|
| Logging.d(TAG, "Stop preview.");
|
| - camera.stopPreview();
|
| - camera.setPreviewCallbackWithBuffer(null);
|
| + if (camera != null) {
|
| + camera.stopPreview();
|
| + camera.setPreviewCallbackWithBuffer(null);
|
| + }
|
| queuedBuffers.clear();
|
| captureFormat = null;
|
|
|
| Logging.d(TAG, "Release camera.");
|
| - camera.release();
|
| - camera = null;
|
| + if (camera != null) {
|
| + camera.release();
|
| + camera = null;
|
| + }
|
| if (eventsHandler != null) {
|
| eventsHandler.onCameraClosed();
|
| }
|
|
|