Bug 1326335 - Ensure MDSM only decodes metadata once. draft
authorJW Wang <jwwang@mozilla.com>
Fri, 23 Dec 2016 19:23:58 +0800
changeset 454746 a1c4e0e98f2ee79d47ae2c65193a38f4832d102e
parent 454737 2530e9f5a40d2a40da750cdbe41cc9d8fc313959
child 540789 95765b403f333e9b3dc75e07614e6aafc4e5d8e2
push id40018
push userjwwang@mozilla.com
push dateFri, 30 Dec 2016 02:47:56 +0000
bugs1326335
milestone53.0a1
Bug 1326335 - Ensure MDSM only decodes metadata once. MozReview-Commit-ID: AqKbR6OuQ40
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1834,17 +1834,17 @@ void
 MediaDecoderStateMachine::
 DecodeMetadataState::OnMetadataRead(MetadataHolder* aMetadata)
 {
   mMetadataRequest.Complete();
 
   // Set mode to PLAYBACK after reading metadata.
   Resource()->SetReadMode(MediaCacheStream::MODE_PLAYBACK);
 
-  mMaster->mInfo = Some(aMetadata->mInfo);
+  mMaster->mInfo.emplace(aMetadata->mInfo);
   mMaster->mMetadataTags = aMetadata->mTags.forget();
   mMaster->mMediaSeekable = Info().mMediaSeekable;
   mMaster->mMediaSeekableOnlyInBufferedRanges = Info().mMediaSeekableOnlyInBufferedRanges;
 
   if (Info().mMetadataDuration.isSome()) {
     mMaster->RecomputeDuration();
   } else if (Info().mUnadjustedMetadataEndTime.isSome()) {
     const TimeUnit unadjusted = Info().mUnadjustedMetadataEndTime.ref();