mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-06 16:28:40 +07:00
Fixed rare thread crashes
This commit is contained in:
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user