20 changed files with 331 additions and 630 deletions
-
11src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt
-
11src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
-
39src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/InputProfileDialogFragment.kt
-
55src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
-
21src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt
-
99src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
-
17src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSearchFragment.kt
-
91src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
-
18src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt
-
13src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriversLoadingDialogFragment.kt
-
193src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
-
12src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFoldersFragment.kt
-
36src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt
-
16src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/InstallableFragment.kt
-
99src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProgressDialogFragment.kt
-
41src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt
-
37src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt
-
69src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
-
45src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
-
38src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/LifecycleUtils.kt
@ -0,0 +1,38 @@ |
|||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
package org.yuzu.yuzu_emu.utils |
|||
|
|||
import androidx.lifecycle.Lifecycle |
|||
import androidx.lifecycle.LifecycleOwner |
|||
import androidx.lifecycle.lifecycleScope |
|||
import androidx.lifecycle.repeatOnLifecycle |
|||
import kotlinx.coroutines.flow.Flow |
|||
import kotlinx.coroutines.flow.MutableStateFlow |
|||
import kotlinx.coroutines.launch |
|||
|
|||
/** |
|||
* Collects this [Flow] with a given [LifecycleOwner]. |
|||
* @param scope [LifecycleOwner] that this [Flow] will be collected with. |
|||
* @param repeatState When to repeat collection on this [Flow]. |
|||
* @param resetState Optional lambda to reset state of an underlying [MutableStateFlow] after |
|||
* [stateCollector] has been run. |
|||
* @param stateCollector Lambda that receives new state. |
|||
*/ |
|||
inline fun <reified T> Flow<T>.collect( |
|||
scope: LifecycleOwner, |
|||
repeatState: Lifecycle.State = Lifecycle.State.CREATED, |
|||
crossinline resetState: () -> Unit = {}, |
|||
crossinline stateCollector: (state: T) -> Unit |
|||
) { |
|||
scope.apply { |
|||
lifecycleScope.launch { |
|||
repeatOnLifecycle(repeatState) { |
|||
this@collect.collect { |
|||
stateCollector(it) |
|||
resetState() |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue