diff options
Diffstat (limited to 'Source/Android/app/src/main/java')
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/ConfigChangedCallback.kt | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/ConfigChangedCallback.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/ConfigChangedCallback.kt new file mode 100644 index 0000000000..4415efa9e8 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/ConfigChangedCallback.kt @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +package org.dolphinemu.dolphinemu.features.settings.model + +import androidx.annotation.Keep + +/** + * Calls the passed-in Runnable when Dolphin's config changes. + * + * Please note: The Runnable may be called from any thread. + */ +class ConfigChangedCallback(runnable: Runnable) { + @Keep + private var pointer: Long = initialize(runnable) + + /** + * Stops the callback from being called in the future. + */ + fun unregister() { + if (pointer != 0L) { + deinitialize(pointer) + pointer = 0L + } + } + + companion object { + @JvmStatic + private external fun initialize(runnable: Runnable): Long + + @JvmStatic + private external fun deinitialize(pointer: Long) + } +} |
