diff --git a/dom/media/systemservices/CamerasParent.cpp b/dom/media/systemservices/CamerasParent.cpp index d51fbbf5fa988680c4eee8df1ef5ac492d90680c..d2c18ac287fa520650356f756d3e692c711e52e5 100644 --- a/dom/media/systemservices/CamerasParent.cpp +++ b/dom/media/systemservices/CamerasParent.cpp @@ -186,6 +186,7 @@ CamerasParent::DispatchToVideoCaptureThread(nsRunnable *event) void CamerasParent::StopVideoCapture() { + LOG((__PRETTY_FUNCTION__)); // We are called from the main thread (xpcom-shutdown) or // from PBackground (when the Actor shuts down). // Shut down the WebRTC stack (on the capture thread) @@ -407,6 +408,7 @@ CamerasParent::SetupEngine(CaptureEngine aCapEngine) void CamerasParent::CloseEngines() { + LOG((__PRETTY_FUNCTION__)); if (!mWebRTCAlive) { return; } @@ -700,10 +702,12 @@ CamerasParent::RecvReleaseCaptureDevice(const int& aCapEngine, RefPtr<nsIRunnable> ipc_runnable = media::NewRunnableFrom([self, error, numdev]() -> nsresult { if (self->IsShuttingDown()) { + LOG(("In Shutdown, not Releasing")); return NS_ERROR_FAILURE; } if (error) { Unused << self->SendReplyFailure(); + LOG(("Failed to free device nr %d", numdev)); return NS_ERROR_FAILURE; } else { Unused << self->SendReplySuccess(); diff --git a/media/webrtc/trunk/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm b/media/webrtc/trunk/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm index 3344bde9c1a632666473db37828d54025fb43989..8e0b0027334d90f35ddef376149f26516cea46fb 100644 --- a/media/webrtc/trunk/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm +++ b/media/webrtc/trunk/webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit.mm @@ -61,8 +61,12 @@ VideoCaptureMacQTKit::~VideoCaptureMacQTKit() if(_captureDevice) { [_captureDevice registerOwner:nil]; - [_captureDevice stopCapture]; - [_captureDevice release]; + [_captureDevice performSelectorOnMainThread:@selector(stopCapture) + withObject:nil + waitUntilDone:NO]; + [_captureDevice performSelectorOnMainThread:@selector(release) + withObject:nil + waitUntilDone:NO]; } if(_captureInfo)