@@ -86,7 +86,7 @@ impl AndroidAppWaker {
86
86
}
87
87
88
88
impl AndroidApp {
89
- pub ( crate ) fn new ( native_activity : NativeActivityGlue , jvm : CloneJavaVM ) -> Self {
89
+ pub ( crate ) fn new ( native_activity : NativeActivityGlue , jvm : CloneJavaVM , main_looper_ptr : * mut ndk_sys :: ALooper ) -> Self {
90
90
let mut env = jvm. get_env ( ) . unwrap ( ) ; // We attach to the thread before creating the AndroidApp
91
91
92
92
let key_map_binding = match KeyCharacterMapBinding :: new ( & mut env) {
@@ -103,6 +103,9 @@ impl AndroidApp {
103
103
looper : Looper {
104
104
ptr : ptr:: null_mut ( ) ,
105
105
} ,
106
+ main_looper : Looper {
107
+ ptr : main_looper_ptr
108
+ } ,
106
109
key_map_binding : Arc :: new ( key_map_binding) ,
107
110
key_maps : Mutex :: new ( HashMap :: new ( ) ) ,
108
111
input_receiver : Mutex :: new ( None ) ,
@@ -147,6 +150,9 @@ pub(crate) struct AndroidAppInner {
147
150
pub ( crate ) native_activity : NativeActivityGlue ,
148
151
looper : Looper ,
149
152
153
+ /// Looper associated with the activy's main thread, sometimes called the UI thread.
154
+ main_looper : Looper ,
155
+
150
156
/// Shared JNI bindings for the `KeyCharacterMap` class
151
157
key_map_binding : Arc < KeyCharacterMapBinding > ,
152
158
@@ -179,6 +185,10 @@ impl AndroidAppInner {
179
185
self . looper . ptr
180
186
}
181
187
188
+ pub fn main_looper ( & self ) -> * mut ndk_sys:: ALooper {
189
+ self . main_looper . ptr
190
+ }
191
+
182
192
pub fn native_window ( & self ) -> Option < NativeWindow > {
183
193
self . native_activity . mutex . lock ( ) . unwrap ( ) . window . clone ( )
184
194
}
0 commit comments