bug 1406831 tighten AssertOnGraphThreadOrNotRunning() to not accept graph thread after mDetectedNotRunning r?pehrsons draft
authorKarl Tomlinson <karlt+@karlt.net>
Thu, 28 Sep 2017 12:17:22 +1300
changeset 676611 0ebde4ac3da80fea901f379605200c05c31a7ab0
parent 676610 795e9cdee643cfea3ff8ab19a462c72d9b732672
child 676612 f2e3eda785cb52413686a1cb16b30c3f01784716
push id83545
push userktomlinson@mozilla.com
push dateMon, 09 Oct 2017 04:51:14 +0000
reviewerspehrsons
bugs1406831, 1406830
milestone58.0a1
bug 1406831 tighten AssertOnGraphThreadOrNotRunning() to not accept graph thread after mDetectedNotRunning r?pehrsons This also permits setting mDriver to null after mDetectedNotRunning, which is useful for fixing bug 1406830. MozReview-Commit-ID: EEgAxqPQPRI
dom/media/MediaStreamGraph.cpp
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -1119,21 +1119,20 @@ void
 MediaStreamGraph::AssertOnGraphThreadOrNotRunning() const
 {
   // either we're on the right thread (and calling CurrentDriver() is safe),
   // or we're going to assert anyways, so don't cross-check CurrentDriver
 #ifdef DEBUG
   MediaStreamGraphImpl const * graph =
     static_cast<MediaStreamGraphImpl const *>(this);
   // if all the safety checks fail, assert we own the monitor
-  if (!graph->mDriver->OnThread()) {
-    if (!(graph->mDetectedNotRunning &&
-          NS_IsMainThread())) {
+  if (!(graph->mDetectedNotRunning ?
+        NS_IsMainThread() : graph->mDriver->OnThread()))
+  {
       graph->mMonitor.AssertCurrentThreadOwns();
-    }
   }
 #endif
 }
 
 bool
 MediaStreamGraphImpl::ShouldUpdateMainThread()
 {
   if (mRealtime) {