diff --git a/native/sapp-android/Cargo.toml b/native/sapp-android/Cargo.toml index 3bebf388..c1b80305 100644 --- a/native/sapp-android/Cargo.toml +++ b/native/sapp-android/Cargo.toml @@ -14,3 +14,4 @@ include = ["src/", "Cargo.toml", "LICENSE-MIT", "LICENSE-APACHE", "README.md"] [dependencies] libc = "0.2" ndk-sys = "0.2.1" +ndk = "0.3.0" \ No newline at end of file diff --git a/native/sapp-android/src/lib.rs b/native/sapp-android/src/lib.rs index 1a077538..afdc3668 100644 --- a/native/sapp-android/src/lib.rs +++ b/native/sapp-android/src/lib.rs @@ -32,7 +32,7 @@ use std::{ }; use libc::pipe; - +use std::ptr::NonNull; pub const SAPP_MAX_TOUCHPOINTS: usize = 8; pub const sapp_event_type_SAPP_EVENTTYPE_INVALID: sapp_event_type = 0; @@ -439,6 +439,17 @@ unsafe fn lock_shared_state() -> std::sync::MutexGuard<'static, SharedState> { SHARED_STATE.as_mut().unwrap().lock().unwrap() } +pub fn get_native_activity() -> Option { + unsafe { + if let Some(activity) = NonNull::new(lock_shared_state().activity) { + Some(ndk::native_activity::NativeActivity::from_ptr(activity)) + } else { + None + } + } + +} + unsafe fn read_shared_state() -> SharedState { lock_shared_state().clone() }