diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c index 6d1ebb5..4b212bd 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.c @@ -86,20 +86,33 @@ static void print_cur_config(struct android_app* android_app) { AConfiguration_getUiModeNight(android_app->config)); } +void android_app_attach_input_queue_looper(struct android_app* android_app) { + if (android_app->inputQueue != NULL) { + LOGV("Attaching input queue to looper"); + AInputQueue_attachLooper(android_app->inputQueue, + android_app->looper, LOOPER_ID_INPUT, NULL, + &android_app->inputPollSource); + } +} + +void android_app_detach_input_queue_looper(struct android_app* android_app) { + if (android_app->inputQueue != NULL) { + LOGV("Detaching input queue from looper"); + AInputQueue_detachLooper(android_app->inputQueue); + } +} + void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd) { switch (cmd) { case APP_CMD_INPUT_CHANGED: LOGV("APP_CMD_INPUT_CHANGED\n"); pthread_mutex_lock(&android_app->mutex); if (android_app->inputQueue != NULL) { - //AInputQueue_detachLooper(android_app->inputQueue); + android_app_detach_input_queue_looper(android_app); } android_app->inputQueue = android_app->pendingInputQueue; if (android_app->inputQueue != NULL) { - //LOGV("Attaching input queue to looper"); - //AInputQueue_attachLooper(android_app->inputQueue, - // android_app->looper, LOOPER_ID_INPUT, NULL, - // &android_app->inputPollSource); + android_app_attach_input_queue_looper(android_app); } pthread_cond_broadcast(&android_app->cond); pthread_mutex_unlock(&android_app->mutex); diff --git a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h index 5ef3f48..2a9c6ed 100644 --- a/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h +++ b/android-activity/native-activity-csrc/native-activity/native_app_glue/android_native_app_glue.h @@ -331,6 +331,9 @@ void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd); */ void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); +void android_app_attach_input_queue_looper(struct android_app* android_app); +void android_app_detach_input_queue_looper(struct android_app* android_app); + /** * Dummy function that used to be used to prevent the linker from stripping app * glue code. No longer necessary, since __attribute__((visibility("default"))) diff --git a/android-activity/src/native_activity/ffi_aarch64.rs b/android-activity/src/native_activity/ffi_aarch64.rs index 6a806c6..00419f7 100644 --- a/android-activity/src/native_activity/ffi_aarch64.rs +++ b/android-activity/src/native_activity/ffi_aarch64.rs @@ -7148,6 +7148,12 @@ extern "C" { #[doc = " actions for the command before calling this function."] pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); } +extern "C" { + pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); +} +extern "C" { + pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/ffi_arm.rs b/android-activity/src/native_activity/ffi_arm.rs index f2b0880..d1f9bb6 100644 --- a/android-activity/src/native_activity/ffi_arm.rs +++ b/android-activity/src/native_activity/ffi_arm.rs @@ -7617,6 +7617,12 @@ extern "C" { #[doc = " actions for the command before calling this function."] pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); } +extern "C" { + pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); +} +extern "C" { + pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/ffi_i686.rs b/android-activity/src/native_activity/ffi_i686.rs index e1d75a4..6c3b885 100644 --- a/android-activity/src/native_activity/ffi_i686.rs +++ b/android-activity/src/native_activity/ffi_i686.rs @@ -9362,6 +9362,12 @@ extern "C" { #[doc = " actions for the command before calling this function."] pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); } +extern "C" { + pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); +} +extern "C" { + pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"] diff --git a/android-activity/src/native_activity/ffi_x86_64.rs b/android-activity/src/native_activity/ffi_x86_64.rs index 9a28453..3025f4d 100644 --- a/android-activity/src/native_activity/ffi_x86_64.rs +++ b/android-activity/src/native_activity/ffi_x86_64.rs @@ -9391,6 +9391,12 @@ extern "C" { #[doc = " actions for the command before calling this function."] pub fn android_app_post_exec_cmd(android_app: *mut android_app, cmd: i8); } +extern "C" { + pub fn android_app_attach_input_queue_looper(android_app: *mut android_app); +} +extern "C" { + pub fn android_app_detach_input_queue_looper(android_app: *mut android_app); +} extern "C" { #[doc = " Dummy function that used to be used to prevent the linker from stripping app"] #[doc = " glue code. No longer necessary, since __attribute__((visibility(\"default\")))"]