Bug 1426578. P5 - offload Init() to another thread.
MozReview-Commit-ID: Fv7eq39GNsk
--- a/dom/media/MediaCache.cpp
+++ b/dom/media/MediaCache.cpp
@@ -2863,18 +2863,23 @@ MediaCacheStream::Init(int64_t aContentL
mStreamLength = aContentLength;
}
mMediaCache = MediaCache::GetMediaCache(aContentLength);
if (!mMediaCache) {
return NS_ERROR_FAILURE;
}
- AutoLock lock(mMediaCache->Monitor());
- mMediaCache->OpenStream(lock, this);
+ OwnerThread()->Dispatch(NS_NewRunnableFunction(
+ "MediaCacheStream::Init",
+ [ this, res = RefPtr<ChannelMediaResource>(mClient) ]() {
+ AutoLock lock(mMediaCache->Monitor());
+ mMediaCache->OpenStream(lock, this);
+ }));
+
return NS_OK;
}
void
MediaCacheStream::InitAsClone(MediaCacheStream* aOriginal)
{
MOZ_ASSERT(!mMediaCache, "Has been initialized.");
MOZ_ASSERT(aOriginal->mMediaCache, "Don't clone an uninitialized stream.");