From 9e8c85c647a85eb0ced34709d30abe64bfa9dfb2 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Wed, 17 Dec 2025 13:43:52 +0100 Subject: [PATCH] Assert that the thread `Looper` matches the main one --- android-activity/src/game_activity/mod.rs | 7 ++++++- android-activity/src/native_activity/mod.rs | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/android-activity/src/game_activity/mod.rs b/android-activity/src/game_activity/mod.rs index 70b6941..8873a32 100644 --- a/android-activity/src/game_activity/mod.rs +++ b/android-activity/src/game_activity/mod.rs @@ -295,6 +295,11 @@ impl AndroidAppInner { unsafe { let native_app = &self.native_app; + assert_eq!( + ndk_sys::ALooper_forThread(), + (*native_app.as_ptr()).looper, + "Application tried to poll events from non-main thread" + ); let mut fd: i32 = 0; let mut events: i32 = 0; @@ -590,7 +595,7 @@ impl AndroidAppInner { let mut guard = self.input_receiver.lock().unwrap(); // Make sure we don't hand out more than one receiver at a time because - // turning the reciever into an interator will perform a swap_buffers + // turning the receiver into an iterator will perform a swap_buffers // for the buffered input events which shouldn't happen while we're in // the middle of iterating events if let Some(receiver) = &*guard { diff --git a/android-activity/src/native_activity/mod.rs b/android-activity/src/native_activity/mod.rs index 88a9fe8..0346b98 100644 --- a/android-activity/src/native_activity/mod.rs +++ b/android-activity/src/native_activity/mod.rs @@ -201,8 +201,9 @@ impl AndroidAppInner { }; trace!("Calling ALooper_pollAll, timeout = {timeout_milliseconds}"); - assert!( - !ndk_sys::ALooper_forThread().is_null(), + assert_eq!( + ndk_sys::ALooper_forThread(), + self.looper.ptr, "Application tried to poll events from non-main thread" ); let id = ndk_sys::ALooper_pollAll(