miroir de https://git.suyu.dev/suyu/suyu.git
52 lignes
1.6 KiB
Kotlin
52 lignes
1.6 KiB
Kotlin
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
package dev.suyu.suyu_emu.disk_shader_cache
|
|
|
|
import androidx.annotation.Keep
|
|
import androidx.lifecycle.ViewModelProvider
|
|
import dev.suyu.suyu_emu.NativeLibrary
|
|
import dev.suyu.suyu_emu.R
|
|
import dev.suyu.suyu_emu.activities.EmulationActivity
|
|
import dev.suyu.suyu_emu.model.EmulationViewModel
|
|
import dev.suyu.suyu_emu.utils.Log
|
|
|
|
@Keep
|
|
object DiskShaderCacheProgress {
|
|
private lateinit var emulationViewModel: EmulationViewModel
|
|
|
|
private fun prepareViewModel() {
|
|
emulationViewModel =
|
|
ViewModelProvider(
|
|
NativeLibrary.sEmulationActivity.get() as EmulationActivity
|
|
)[EmulationViewModel::class.java]
|
|
}
|
|
|
|
@JvmStatic
|
|
fun loadProgress(stage: Int, progress: Int, max: Int) {
|
|
val emulationActivity = NativeLibrary.sEmulationActivity.get()
|
|
if (emulationActivity == null) {
|
|
Log.error("[DiskShaderCacheProgress] EmulationActivity not present")
|
|
return
|
|
}
|
|
|
|
emulationActivity.runOnUiThread {
|
|
when (LoadCallbackStage.values()[stage]) {
|
|
LoadCallbackStage.Prepare -> prepareViewModel()
|
|
LoadCallbackStage.Build -> emulationViewModel.updateProgress(
|
|
emulationActivity.getString(R.string.building_shaders),
|
|
progress,
|
|
max
|
|
)
|
|
|
|
LoadCallbackStage.Complete -> {}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Equivalent to VideoCore::LoadCallbackStage
|
|
enum class LoadCallbackStage {
|
|
Prepare, Build, Complete
|
|
}
|
|
}
|