Bug 1423465. P3 - assert MediaCacheStream::SetPlaybackRate() is called off the main thread. draft
authorJW Wang <jwwang@mozilla.com>
Tue, 05 Dec 2017 14:15:38 +0800
changeset 708107 e0bf93d7638b741c14bb8cf91af48d678e288cb7
parent 708106 473f20c792461f62f268beb61ea0ea1420d27c16
child 708108 03d4443f03a4479ff32dbc63897d84b0a2a3c1f6
push id92287
push userjwwang@mozilla.com
push dateWed, 06 Dec 2017 07:32:57 +0000
bugs1423465
milestone59.0a1
Bug 1423465. P3 - assert MediaCacheStream::SetPlaybackRate() is called off the main thread. MozReview-Commit-ID: CZCLkRa0T2v
dom/media/MediaCache.cpp
--- a/dom/media/MediaCache.cpp
+++ b/dom/media/MediaCache.cpp
@@ -2537,28 +2537,24 @@ MediaCacheStream::SetReadMode(ReadMode a
       }
     });
   OwnerThread()->Dispatch(r.forget());
 }
 
 void
 MediaCacheStream::SetPlaybackRate(uint32_t aBytesPerSecond)
 {
+  MOZ_ASSERT(!NS_IsMainThread());
   MOZ_ASSERT(aBytesPerSecond > 0, "Zero playback rate not allowed");
 
-  nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction(
-    "MediaCacheStream::SetPlaybackRate",
-    [ =, client = RefPtr<ChannelMediaResource>(mClient) ]() {
-      AutoLock lock(mMediaCache->Monitor());
-      if (!mClosed && mPlaybackBytesPerSecond != aBytesPerSecond) {
-        mPlaybackBytesPerSecond = aBytesPerSecond;
-        mMediaCache->QueueUpdate(lock);
-      }
-    });
-  OwnerThread()->Dispatch(r.forget());
+  AutoLock lock(mMediaCache->Monitor());
+  if (!mClosed && mPlaybackBytesPerSecond != aBytesPerSecond) {
+    mPlaybackBytesPerSecond = aBytesPerSecond;
+    mMediaCache->QueueUpdate(lock);
+  }
 }
 
 nsresult
 MediaCacheStream::Seek(AutoLock& aLock, int64_t aOffset)
 {
   MOZ_ASSERT(!NS_IsMainThread());
 
   if (!IsOffsetAllowed(aOffset)) {