diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt index fc60bc7..088df3a 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt @@ -10,6 +10,7 @@ import androidx.core.view.WindowCompat import android.view.WindowManager import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsControllerCompat +import org.koin.androidx.compose.KoinAndroidContext class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -21,7 +22,9 @@ class MainActivity : ComponentActivity() { setContent { - App() + KoinAndroidContext { + App() + } } } private fun hideSystemBar() { diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt index e765220..5d1c6a6 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt @@ -496,7 +496,7 @@ actual class FMediaPlayer actual constructor( while (isActive) { if (isRunning && !isHolding) { val elapsedNano = System.nanoTime() - lastEventNano - val extraTicks = (elapsedNano / (usPerTick * 1000)).toLong() + val extraTicks = (elapsedNano / (usPerTick * 1000)).toLong().coerceAtLeast(0L) val interpolated = (currentTickPos + extraTicks) / resolution val rawGrid = interpolated.toInt().coerceAtLeast(0) sharedScreenModel.updateActiveIndexByIndex(rawGrid) diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt index 7cf0419..d83bef9 100644 --- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt +++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/Solfa.kt @@ -161,9 +161,9 @@ class Solfa(val sharedScreenModel: SharedScreenModel, private val fileRepository initialDirectory = if (initialPath.isNotBlank()) initialPath else homedir, onFileSelected = { path -> if (path != null) { - sharedScreenModel.reset() - parse(path) - screenModelScope.launch { + screenModelScope.launch(Dispatchers.Default) { + sharedScreenModel.reset() + parse(path) stateSettings.saveLastUsedDir(path) } //loadSolfa()