Bug 1361336 - part2: Prevent AudioStream::ResetDefaultDevice() from being called before stream is started; r=cpearce draft
authorChun-Min Chang <chun.m.chang@gmail.com>
Fri, 21 Jul 2017 17:45:45 +0800
changeset 616561 eda9093d407bc82530775f85acd5ec35213ab786
parent 616560 dbf4d05814be4eeb7d916efc5221851f5f300433
child 616562 d969826aa4894c67aaef177960814675009a8c5e
push id70720
push userbmo:cchang@mozilla.com
push dateThu, 27 Jul 2017 05:33:55 +0000
reviewerscpearce
bugs1361336
milestone56.0a1
Bug 1361336 - part2: Prevent AudioStream::ResetDefaultDevice() from being called before stream is started; r=cpearce
dom/media/AudioStream.cpp
--- a/dom/media/AudioStream.cpp
+++ b/dom/media/AudioStream.cpp
@@ -473,16 +473,21 @@ AudioStream::Shutdown()
 
   mState = SHUTDOWN;
 }
 
 void
 AudioStream::ResetDefaultDevice()
 {
   MonitorAutoLock mon(mMonitor);
+  if (mState != STARTED && mState != STOPPED) {
+    return;
+  }
+
+  MOZ_ASSERT(mCubebStream);
   auto r = InvokeCubeb(cubeb_stream_reset_default_device);
   if (!(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED)) {
     mState = ERRORED;
   }
 }
 
 int64_t
 AudioStream::GetPosition()