Browse Source

Fix love.audio.play(staticsources) when the sources have been paused. Resolves issue #1363.

Alex Szpakowski 7 years ago
parent
commit
1f52abf619
1 changed files with 12 additions and 4 deletions
  1. 12 4
      src/modules/audio/openal/Source.cpp

+ 12 - 4
src/modules/audio/openal/Source.cpp

@@ -1000,11 +1000,19 @@ bool Source::play(const std::vector<love::audio::Source*> &sources)
 	toPlay.reserve(sources.size());
 	for (size_t i = 0; i < sources.size(); i++)
 	{
-		if (wasPlaying[i])
+		// If the source was paused, wasPlaying[i] will be true but we still
+		// want to resume it. We don't want to call alSourcePlay on sources
+		// that are actually playing though.
+		if (wasPlaying[i] && sources[i]->isPlaying())
 			continue;
-		Source *source = (Source*) sources[i];
-		source->source = ids[i];
-		source->prepareAtomic();
+
+		if (!wasPlaying[i])
+		{
+			Source *source = (Source*) sources[i];
+			source->source = ids[i];
+			source->prepareAtomic();
+		}
+
 		toPlay.push_back(ids[i]);
 	}