don't hit iterators during RunStreamStage unless we have to - win32's debug stl grabs...
authorJonathan Marshall <jmarshall@never.you.mind>
Thu, 24 May 2012 23:49:56 +0000 (11:49 +1200)
committerJonathan Marshall <jmarshall@never.you.mind>
Thu, 24 May 2012 23:49:56 +0000 (11:49 +1200)
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp

index 39e100f..ec47943 100644 (file)
@@ -1101,17 +1101,19 @@ unsigned int CSoftAE::RunRawStreamStage(unsigned int channelCount, void *out, bo
 
 unsigned int CSoftAE::RunStreamStage(unsigned int channelCount, void *out, bool &restart)
 {
-  StreamList resumeStreams;
-  static StreamList::iterator itt;
-
   float *dst = (float*)out;
   unsigned int mixed = 0;
 
   /* identify the master stream */
   CSingleLock streamLock(m_streamLock);
 
+  /* no point doing anything if we have no streams */
+  if (m_playingStreams.empty())
+    return mixed;
+
   /* mix in any running streams */
-  for (itt = m_playingStreams.begin(); itt != m_playingStreams.end(); ++itt)
+  StreamList resumeStreams;
+  for (StreamList::iterator itt = m_playingStreams.begin(); itt != m_playingStreams.end(); ++itt)
   {
     CSoftAEStream *stream = *itt;