fianlly found the culprit of repeated audio stopping but have no idea how to fix

This commit is contained in:
minjaesong
2024-02-21 16:53:51 +09:00
parent 91c5105a12
commit 549c03c2b4
3 changed files with 10 additions and 3 deletions

View File

@@ -123,14 +123,19 @@ class AudioMixer : Disposable {
* Return oldest dynamic track, even if the track is currently playing
*/
fun getFreeTrackNoMatterWhat(): TerrarumAudioMixerTrack {
return getFreeTrack() ?: dynamicTracks.minBy { it.playStartedTime }
synchronized(this) {
return getFreeTrack() ?: dynamicTracks.minBy { it.playStartedTime }
}
}
/**
* Return oldest dynamic track that is not playing
*/
fun getFreeTrack(): TerrarumAudioMixerTrack? {
return dynamicTracks.filter { it.trackingTarget == null && !it.isPlaying }.minByOrNull { it.playStartedTime }
synchronized(this) {
return dynamicTracks.filter { it.trackingTarget == null && !it.isPlaying }
.minByOrNull { it.playStartedTime }
}
}
var listenerHeadSize = BinoPan.EARDIST_DEFAULT; private set

View File

@@ -162,7 +162,8 @@ class TerrarumAudioMixerTrack(
override fun equals(other: Any?) = this.hash == (other as TerrarumAudioMixerTrack).hash
fun stop() {
printdbg(this, "Stop music (mixertrack=${this.name}, musictrack=$currentTrack)")
printdbg("TerrarumAudioMixerTrack $name", "Stop music (mixertrack=${this.name}, musictrack=$currentTrack)")
printStackTrace("TerrarumAudioMixerTrack $name")
currentTrack?.reset()

View File

@@ -289,6 +289,7 @@ class FixtureSmelterBasic : FixtureBase, CraftingStation {
// manage audio
// FIXME this code is also killing the audio played by the other fixture (FixtureFurnaceAndAnvil)
getTrackByAudio(static).let {
if (it == null || (temperature > 0f && !it.isPlaying && !it.playRequested.get())) {
startAudio(static) {