Bug 1428390 - Use mChildIsAlive to decide whether to send replies. r?jib draft
authorAndreas Pehrson <pehrsons@mozilla.com>
Mon, 08 Jan 2018 12:42:55 +0100
changeset 718535 b809f44eb790df6740bfb5d942416fc505aa3086
parent 718505 d5f42a23909eb181274731b07e4984bfbd18557d
child 718536 ad2324282192c35e4ec0df337e74d4ad22642806
push id94950
push userbmo:apehrson@mozilla.com
push dateWed, 10 Jan 2018 12:37:09 +0000
reviewersjib
bugs1428390
milestone59.0a1
Bug 1428390 - Use mChildIsAlive to decide whether to send replies. r?jib MozReview-Commit-ID: BmpvYKo1tpJ
dom/media/systemservices/CamerasParent.cpp
--- a/dom/media/systemservices/CamerasParent.cpp
+++ b/dom/media/systemservices/CamerasParent.cpp
@@ -467,17 +467,17 @@ CamerasParent::RecvNumberOfCaptureDevice
       int num = -1;
       if (auto engine = self->EnsureInitialized(aCapEngine)) {
         if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) {
           num = devInfo->NumberOfDevices();
         }
       }
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, num]() -> nsresult {
-          if (self->IsShuttingDown()) {
+          if (!self->mChildIsAlive) {
             return NS_ERROR_FAILURE;
           }
           if (num < 0) {
             LOG(("RecvNumberOfCaptureDevices couldn't find devices"));
             Unused << self->SendReplyFailure();
             return NS_ERROR_FAILURE;
           } else {
             LOG(("RecvNumberOfCaptureDevices: %d", num));
@@ -499,17 +499,17 @@ CamerasParent::RecvEnsureInitialized(con
 
   RefPtr<CamerasParent> self(this);
   RefPtr<Runnable> webrtc_runnable =
     media::NewRunnableFrom([self, aCapEngine]() -> nsresult {
       bool result = self->EnsureInitialized(aCapEngine);
 
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, result]() -> nsresult {
-          if (self->IsShuttingDown()) {
+          if (!self->mChildIsAlive) {
             return NS_ERROR_FAILURE;
           }
           if (!result) {
             LOG(("RecvEnsureInitialized failed"));
             Unused << self->SendReplyFailure();
             return NS_ERROR_FAILURE;
           } else {
             LOG(("RecvEnsureInitialized succeeded"));
@@ -537,17 +537,17 @@ CamerasParent::RecvNumberOfCapabilities(
       int num = -1;
       if (auto engine = self->EnsureInitialized(aCapEngine)) {
         if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) {
           num = devInfo->NumberOfCapabilities(unique_id.get());
         }
       }
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, num]() -> nsresult {
-          if (self->IsShuttingDown()) {
+          if (!self->mChildIsAlive) {
             return NS_ERROR_FAILURE;
           }
           if (num < 0) {
             LOG(("RecvNumberOfCapabilities couldn't find capabilities"));
             Unused << self->SendReplyFailure();
             return NS_ERROR_FAILURE;
           } else {
             LOG(("RecvNumberOfCapabilities: %d", num));
@@ -588,17 +588,17 @@ CamerasParent::RecvGetCaptureCapability(
             self->mAllCandidateCapabilities.emplace(nsCString(unique_id), candidateCapabilities);
           } else {
             (iter->second).emplace(num, webrtcCaps);
           }
         }
       }
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, webrtcCaps, error]() -> nsresult {
-          if (self->IsShuttingDown()) {
+          if (!self->mChildIsAlive) {
             return NS_ERROR_FAILURE;
           }
           VideoCaptureCapability capCap(webrtcCaps.width,
                                    webrtcCaps.height,
                                    webrtcCaps.maxFPS,
                                    webrtcCaps.expectedCaptureDelay,
                                    webrtcCaps.rawType,
                                    webrtcCaps.codecType,
@@ -648,17 +648,17 @@ CamerasParent::RecvGetCaptureDevice(cons
         }
       }
       if (!error) {
         name.Assign(deviceName);
         uniqueId.Assign(deviceUniqueId);
       }
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, error, name, uniqueId, devicePid]() {
-          if (self->IsShuttingDown()) {
+          if (!self->mChildIsAlive) {
             return NS_ERROR_FAILURE;
           }
           if (error) {
             LOG(("GetCaptureDevice failed: %d", error));
             Unused << self->SendReplyFailure();
             return NS_ERROR_FAILURE;
           }
           bool scary = (devicePid == getpid());
@@ -759,17 +759,17 @@ CamerasParent::RecvAllocateCaptureDevice
           engine->WithEntry(numdev, [&error](VideoEngine::CaptureEntry& cap) {
             if (cap.VideoCapture()) {
               error = 0;
             }
           });
         }
         RefPtr<nsIRunnable> ipc_runnable =
           media::NewRunnableFrom([self, numdev, error]() -> nsresult {
-            if (self->IsShuttingDown()) {
+            if (!self->mChildIsAlive) {
               return NS_ERROR_FAILURE;
             }
             if (error) {
               Unused << self->SendReplyFailure();
               return NS_ERROR_FAILURE;
             } else {
               LOG(("Allocated device nr %d", numdev));
               Unused << self->SendReplyAllocateCaptureDevice(numdev);
@@ -805,18 +805,17 @@ CamerasParent::RecvReleaseCaptureDevice(
   LOG(("RecvReleaseCamera device nr %d", numdev));
 
   RefPtr<CamerasParent> self(this);
   RefPtr<Runnable> webrtc_runnable =
     media::NewRunnableFrom([self, aCapEngine, numdev]() -> nsresult {
       int error = self->ReleaseCaptureDevice(aCapEngine, numdev);
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, error, numdev]() -> nsresult {
-          if (self->IsShuttingDown()) {
-            LOG(("In Shutdown, not Releasing"));
+          if (!self->mChildIsAlive) {
             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();
@@ -928,17 +927,17 @@ CamerasParent::RecvStartCapture(const Ca
           if (!error) {
             cap.VideoCapture()->RegisterCaptureDataCallback(
               static_cast<rtc::VideoSinkInterface<webrtc::VideoFrame>*>(*cbh));
           }
         });
       }
       RefPtr<nsIRunnable> ipc_runnable =
         media::NewRunnableFrom([self, error]() -> nsresult {
-          if (self->IsShuttingDown()) {
+          if (!self->mChildIsAlive) {
             return NS_ERROR_FAILURE;
           }
           if (!error) {
             Unused << self->SendReplySuccess();
             return NS_OK;
           } else {
             Unused << self->SendReplyFailure();
             return NS_ERROR_FAILURE;
@@ -989,17 +988,17 @@ CamerasParent::RecvStopCapture(const Cap
 
   RefPtr<CamerasParent> self(this);
   RefPtr<Runnable> webrtc_runnable =
     media::NewRunnableFrom([self, aCapEngine, capnum]() -> nsresult {
       self->StopCapture(aCapEngine, capnum);
       return NS_OK;
     });
   nsresult rv = DispatchToVideoCaptureThread(webrtc_runnable);
-  if (self->IsShuttingDown()) {
+  if (!self->mChildIsAlive) {
     if (NS_FAILED(rv)) {
       return IPC_FAIL_NO_REASON(this);
     }
   } else {
     if (NS_SUCCEEDED(rv)) {
       if (!SendReplySuccess()) {
         return IPC_FAIL_NO_REASON(this);
       }