Bug 1452048 - Read _captureStarted under lock on the camera thread. r=dminor a=jcristau
authorAndreas Pehrson <pehrsons@mozilla.com>
Fri, 06 Apr 2018 15:50:31 +0200
changeset 463200 7617bd6c7f2c215fcdd344af2cad8b0a6b1537b6
parent 463199 5032bbe4c92fb0cb307b8c11c824993ce0d51e69
child 463201 36b90debcd465bc6c7af1c3b01ba73aef7647611
push id1683
push usersfraser@mozilla.com
push dateThu, 26 Apr 2018 16:43:40 +0000
treeherdermozilla-release@5af6cb21869d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdminor, jcristau
bugs1452048
milestone60.0
Bug 1452048 - Read _captureStarted under lock on the camera thread. r=dminor a=jcristau It is written under lock on the controlling thread (CamerasParent) in StartCapture/StopCapture. MozReview-Commit-ID: E7eq1YElhwt
media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc
--- a/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc
+++ b/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc
@@ -111,17 +111,20 @@ rtc::scoped_refptr<VideoCaptureModule> V
   }
   return implementation;
 }
 
 int32_t VideoCaptureAndroid::OnIncomingFrame(uint8_t* videoFrame,
                                              size_t videoFrameLength,
                                              int32_t degrees,
                                              int64_t captureTime) {
-  if (!_captureStarted)
+  // _captureStarted is written on the controlling thread in
+  // StartCapture/StopCapture. This is the camera thread.
+  // CaptureStarted() will access it under a lock.
+  if (!CaptureStarted())
     return 0;
 
   VideoRotation current_rotation =
       (degrees <= 45 || degrees > 315) ? kVideoRotation_0 :
       (degrees > 45 && degrees <= 135) ? kVideoRotation_90 :
       (degrees > 135 && degrees <= 225) ? kVideoRotation_180 :
       (degrees > 225 && degrees <= 315) ? kVideoRotation_270 :
       kVideoRotation_0;  // Impossible.