Bug 1298297 - Remove DECODER_STATE_ERROR from MDSM. draft
authorJW Wang <jwwang@mozilla.com>
Fri, 26 Aug 2016 17:41:45 +1200
changeset 406937 805f24b6d41cd7ad1617035ad68d1be23362dfdf
parent 406604 2abe85fe914097f6d766f4a3335defa520f30527
child 406938 fcb350f60845577206cf83f13e457b951be3de4f
push id27888
push userjwwang@mozilla.com
push dateTue, 30 Aug 2016 02:45:04 +0000
bugs1298297
milestone51.0a1
Bug 1298297 - Remove DECODER_STATE_ERROR from MDSM. MozReview-Commit-ID: BWpPoXDDlux
dom/media/MediaDecoderStateMachine.cpp
dom/media/MediaDecoderStateMachine.h
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1028,17 +1028,16 @@ MediaDecoderStateMachine::ToStateStr(Sta
     case DECODER_STATE_DECODING_METADATA: return "DECODING_METADATA";
     case DECODER_STATE_WAIT_FOR_CDM:      return "WAIT_FOR_CDM";
     case DECODER_STATE_DORMANT:           return "DORMANT";
     case DECODER_STATE_DECODING:          return "DECODING";
     case DECODER_STATE_SEEKING:           return "SEEKING";
     case DECODER_STATE_BUFFERING:         return "BUFFERING";
     case DECODER_STATE_COMPLETED:         return "COMPLETED";
     case DECODER_STATE_SHUTDOWN:          return "SHUTDOWN";
-    case DECODER_STATE_ERROR:             return "ERROR";
     default: MOZ_ASSERT_UNREACHABLE("Invalid state.");
   }
   return "UNKNOWN";
 }
 
 const char*
 MediaDecoderStateMachine::ToStateStr()
 {
@@ -1095,17 +1094,16 @@ MediaDecoderStateMachine::EnterState(Sta
       StartDecoding();
       break;
     case DECODER_STATE_BUFFERING:
       StartBuffering();
       break;
     case DECODER_STATE_COMPLETED:
       ScheduleStateMachine();
       break;
-    case DECODER_STATE_ERROR:
     case DECODER_STATE_SHUTDOWN:
       mIsShutdown = true;
       break;
     default:
       break;
   }
 }
 
@@ -1950,24 +1948,21 @@ MediaDecoderStateMachine::DecodeError()
 {
   MOZ_ASSERT(OnTaskQueue());
 
   if (IsShutdown()) {
     // Already shutdown.
     return;
   }
 
-  // Change state to error, which will cause the state machine to wait until
-  // the MediaDecoder shuts it down.
-  SetState(DECODER_STATE_ERROR);
-  ScheduleStateMachine();
-  DECODER_WARN("Decode error, changed state to ERROR");
-
-  // MediaDecoder::DecodeError notifies the owner, and then shuts down the state
-  // machine.
+  DECODER_WARN("Decode error");
+  // Change state to SHUTDOWN so we have no more processing.
+  SetState(DECODER_STATE_SHUTDOWN);
+
+  // Notify the decode error and MediaDecoder will shut down MDSM.
   mOnPlaybackEvent.Notify(MediaEventType::DecodeError);
 }
 
 void
 MediaDecoderStateMachine::OnMetadataRead(MetadataHolder* aMetadata)
 {
   MOZ_ASSERT(OnTaskQueue());
   MOZ_ASSERT(mState == DECODER_STATE_DECODING_METADATA);
@@ -2275,17 +2270,16 @@ nsresult MediaDecoderStateMachine::RunSt
 
   mDelayedScheduler.Reset(); // Must happen on state machine task queue.
   mDispatchedStateMachine = false;
 
   MediaResource* resource = mResource;
   NS_ENSURE_TRUE(resource, NS_ERROR_NULL_POINTER);
 
   switch (mState) {
-    case DECODER_STATE_ERROR:
     case DECODER_STATE_SHUTDOWN:
     case DECODER_STATE_DORMANT:
     case DECODER_STATE_WAIT_FOR_CDM:
     case DECODER_STATE_DECODING_METADATA:
       return NS_OK;
 
     case DECODER_STATE_DECODING: {
       if (IsDecodingFirstFrame()) {
--- a/dom/media/MediaDecoderStateMachine.h
+++ b/dom/media/MediaDecoderStateMachine.h
@@ -157,18 +157,17 @@ public:
   enum State {
     DECODER_STATE_DECODING_METADATA,
     DECODER_STATE_WAIT_FOR_CDM,
     DECODER_STATE_DORMANT,
     DECODER_STATE_DECODING,
     DECODER_STATE_SEEKING,
     DECODER_STATE_BUFFERING,
     DECODER_STATE_COMPLETED,
-    DECODER_STATE_SHUTDOWN,
-    DECODER_STATE_ERROR
+    DECODER_STATE_SHUTDOWN
   };
 
   void DumpDebugInfo();
 
   void AddOutputStream(ProcessedMediaStream* aStream, bool aFinishWhenEnded);
   // Remove an output stream added with AddOutputStream.
   void RemoveOutputStream(MediaStream* aStream);