Fixed rare thread crashes

This commit is contained in:
Yair Morgenstern
2022-11-08 23:49:53 +02:00
parent c98a36c10f
commit d748d489e2
3 changed files with 10 additions and 9 deletions

View File

@ -141,6 +141,8 @@ class UncivGame(parameters: UncivGameParameters) : Game() {
TileSetCache.loadTileSetConfigs() TileSetCache.loadTileSetConfigs()
SkinCache.loadSkinConfigs() SkinCache.loadSkinConfigs()
val vanillaRuleset = RulesetCache.getVanillaRuleset()
if (settings.multiplayer.userId.isEmpty()) { // assign permanent user id if (settings.multiplayer.userId.isEmpty()) { // assign permanent user id
settings.multiplayer.userId = UUID.randomUUID().toString() settings.multiplayer.userId = UUID.randomUUID().toString()
settings.save() settings.save()
@ -157,7 +159,7 @@ class UncivGame(parameters: UncivGameParameters) : Game() {
musicController.chooseTrack(suffixes = listOf(MusicMood.Menu, MusicMood.Ambient), musicController.chooseTrack(suffixes = listOf(MusicMood.Menu, MusicMood.Ambient),
flags = EnumSet.of(MusicTrackChooserFlags.SuffixMustMatch)) flags = EnumSet.of(MusicTrackChooserFlags.SuffixMustMatch))
ImageGetter.ruleset = RulesetCache.getVanillaRuleset() // so that we can enter the map editor without having to load a game first ImageGetter.ruleset = vanillaRuleset // so that we can enter the map editor without having to load a game first
when { when {
settings.isFreshlyCreated -> setAsRootScreen(LanguagePickerScreen()) settings.isFreshlyCreated -> setAsRootScreen(LanguagePickerScreen())
@ -381,7 +383,7 @@ class UncivGame(parameters: UncivGameParameters) : Game() {
override fun pause() { override fun pause() {
val curGameInfo = gameInfo val curGameInfo = gameInfo
if (curGameInfo != null) files.requestAutoSave(curGameInfo) if (curGameInfo != null) files.requestAutoSave(curGameInfo)
musicController.pause() if (::musicController.isInitialized) musicController.pause()
super.pause() super.pause()
} }

View File

@ -1,12 +1,12 @@
package com.unciv.ui.audio package com.unciv.ui.audio
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.Files.FileType import com.badlogic.gdx.Files.FileType
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.audio.Music import com.badlogic.gdx.audio.Music
import com.badlogic.gdx.files.FileHandle import com.badlogic.gdx.files.FileHandle
import com.unciv.UncivGame import com.unciv.UncivGame
import com.unciv.models.metadata.GameSettings
import com.unciv.logic.multiplayer.storage.DropBox import com.unciv.logic.multiplayer.storage.DropBox
import com.unciv.models.metadata.GameSettings
import com.unciv.utils.Log import com.unciv.utils.Log
import com.unciv.utils.debug import com.unciv.utils.debug
import java.util.* import java.util.*
@ -418,9 +418,10 @@ class MusicController {
*/ */
fun pause(speedFactor: Float = 1f) { fun pause(speedFactor: Float = 1f) {
debug("MusicTrackController.pause called") debug("MusicTrackController.pause called")
if ((state != ControllerState.Playing && state != ControllerState.PlaySingle) || current == null) return val controller = current
if ((state != ControllerState.Playing && state != ControllerState.PlaySingle) || controller == null) return
val fadingStep = defaultFadingStep * speedFactor.coerceIn(0.001f..1000f) val fadingStep = defaultFadingStep * speedFactor.coerceIn(0.001f..1000f)
current!!.startFade(MusicTrackController.State.FadeOut, fadingStep) controller.startFade(MusicTrackController.State.FadeOut, fadingStep)
if (next?.state == MusicTrackController.State.FadeIn) if (next?.state == MusicTrackController.State.FadeIn)
next!!.startFade(MusicTrackController.State.FadeOut) next!!.startFade(MusicTrackController.State.FadeOut)
state = ControllerState.Pause state = ControllerState.Pause

View File

@ -173,9 +173,7 @@ object SoundPlayer {
if (initialDelay > 0 || resource.play(volume) == -1L) { if (initialDelay > 0 || resource.play(volume) == -1L) {
Concurrency.run("DelayedSound") { Concurrency.run("DelayedSound") {
delay(initialDelay.toLong()) delay(initialDelay.toLong())
while (resource.play(volume) == -1L) { while (resource.play(volume) == -1L) delay(20L)
delay(20L)
}
} }
} }
} }