Bug 1351053. P1 - Backed out changeset da84999fd0b2. draft
authorJW Wang <jwwang@mozilla.com>
Thu, 13 Apr 2017 15:16:08 +0800
changeset 562590 452a50a13698dfeac6fb0d1493aba5774f266749
parent 562432 198effec6e11460e977f13e9cb83050a21a64d27
child 562591 2dcd57227408af3d47a649a764793a5a9206f019
push id54059
push userjwwang@mozilla.com
push dateFri, 14 Apr 2017 03:31:33 +0000
bugs1351053
milestone55.0a1
Bug 1351053. P1 - Backed out changeset da84999fd0b2. MozReview-Commit-ID: rV4W2EXwN9
dom/media/MediaFormatReader.cpp
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -914,17 +914,17 @@ public:
     RefPtr<Wrapper> self = this;
     mTaskQueue->Dispatch(NS_NewRunnableFunction([self]() {
       self->mTrackDemuxer->Reset();
     }));
   }
 
   nsresult GetNextRandomAccessPoint(TimeUnit* aTime) override
   {
-    AutoLock lock(this, __func__);
+    MutexAutoLock lock(mMutex);
     if (NS_SUCCEEDED(mNextRandomAccessPointResult)) {
       *aTime = mNextRandomAccessPoint;
     }
     return mNextRandomAccessPointResult;
   }
 
   RefPtr<SkipAccessPointPromise>
   SkipToNextRandomAccessPoint(const media::TimeUnit& aTimeThreshold) override
@@ -938,83 +938,62 @@ public:
              })
       ->Then(mTaskQueue, __func__,
              [self]() { self->UpdateRandomAccessPoint(); },
              [self]() { self->UpdateRandomAccessPoint(); });
   }
 
   TimeIntervals GetBuffered() override
   {
-    AutoLock lock(this, __func__);
+    MutexAutoLock lock(mMutex);
     return mBuffered;
   }
 
   void BreakCycles() override { }
 
 private:
-  class AutoLock : public MutexAutoLock
-  {
-  public:
-    AutoLock(Wrapper* aThis, const char* aCallSite)
-      : MutexAutoLock(aThis->mMutex)
-      , mThis(aThis)
-    {
-      mThis->mCallSite = aCallSite;
-    }
-    ~AutoLock()
-    {
-      mThis->mCallSite = nullptr;
-    }
-  private:
-    Wrapper* const mThis;
-  };
-
   Mutex mMutex;
-  const char* mCallSite = nullptr;
   const RefPtr<AutoTaskQueue> mTaskQueue;
   const bool mGetSamplesMayBlock;
   const UniquePtr<TrackInfo> mInfo;
   // mTrackDemuxer is only ever accessed on demuxer's task queue.
   RefPtr<MediaTrackDemuxer> mTrackDemuxer;
   // All following members are protected by mMutex
   nsresult mNextRandomAccessPointResult = NS_OK;
   TimeUnit mNextRandomAccessPoint;
   TimeIntervals mBuffered;
   friend class DemuxerProxy;
 
   ~Wrapper()
   {
-    if (mCallSite != nullptr) {
-      MOZ_CRASH_UNSAFE_PRINTF("destroying a still-owned lock! callsite=%s", mCallSite);
-    }
     RefPtr<MediaTrackDemuxer> trackDemuxer = mTrackDemuxer.forget();
     mTaskQueue->Dispatch(NS_NewRunnableFunction(
       [trackDemuxer]() { trackDemuxer->BreakCycles(); }));
   }
 
   void UpdateRandomAccessPoint()
   {
     MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
     if (!mTrackDemuxer) {
       // Detached.
       return;
     }
-    AutoLock lock(this, __func__);
+    MutexAutoLock lock(mMutex);
     mNextRandomAccessPointResult =
       mTrackDemuxer->GetNextRandomAccessPoint(&mNextRandomAccessPoint);
   }
 
   void UpdateBuffered()
   {
     MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
     if (!mTrackDemuxer) {
       // Detached.
       return;
     }
-    AutoLock lock(this, __func__);
+    MutexAutoLock lock(mMutex);
     mBuffered = mTrackDemuxer->GetBuffered();
   }
 };
 
 RefPtr<MediaDataDemuxer::InitPromise>
 MediaFormatReader::DemuxerProxy::Init()
 {
   RefPtr<Data> data = mData;