Merge pull request #1538 from castdrian/ios-audio-stuff

fix(ios): recover audio after route changes
This commit is contained in:
bryanthaboi
2026-08-18 17:02:10 -04:00
committed by GitHub
3 changed files with 92 additions and 25 deletions
+1 -1
View File
@@ -179,7 +179,7 @@ local function playMusicSync(data, header, allowLoops)
currentMusic = { source = source, engine = engine, threaded = false,
started = true, finished = false }
fillSync(MUSIC_FILL_INITIAL)
if not musicHeld then source:play() end
if not musicHeld then pcall(source.play, source) end
return source
end
+10 -10
View File
@@ -165,7 +165,7 @@ local function playPath(data, key, def, pitch, tempo, plain)
reportBadDef("sfx", key, owner(data, "sfx", key), err)
return nil
end
s:setVolume(volumeFor(key))
pcall(s.setVolume, s, volumeFor(key))
cache[key] = s
src = s
end
@@ -619,12 +619,12 @@ function Sound.playPikaCry(data, n)
-- extractPikachuCries); widenMono re-decodes to 16-bit stereo so they
-- stay off surround outputs (#626). Fresh extracts are already stereo.
s = widenMono(s, path)
s:setVolume(volumeFor(key))
pcall(s.setVolume, s, volumeFor(key))
cache[key] = s
src = s
end
src:stop()
src:play()
pcall(src.stop, src)
pcall(src.play, src)
played("cry", "PIKACHU_PCM_" .. n, "PIKACHU")
return src
end
@@ -659,12 +659,12 @@ function Sound.playCry(data, species, pikaClip)
owner(data, "cries", species), err)
return nil
end
s:setVolume(volumeFor(key))
pcall(s.setVolume, s, volumeFor(key))
cache[key] = s
src = s
end
src:stop()
src:play()
pcall(src.stop, src)
pcall(src.play, src)
played("cry", species, species)
return src
end
@@ -734,12 +734,12 @@ function Sound.startLoop(data, name)
reportBadDef("sfx", name, owner(data, "sfx", name), err or "no source")
return
end
s:setLooping(true)
s:setVolume(volumeFor(name))
pcall(s.setLooping, s, true)
pcall(s.setVolume, s, volumeFor(name))
loopCache[name] = s
src = s
end
src:play()
pcall(src.play, src)
looping[name] = src
end