From 61266986e53a31add3a048cd84f5cd23e6f6a41c Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 27 Oct 2026 20:10:00 +0100 Subject: [PATCH] Route bridge activity requests through the worker owner --- .../jni_bridge/android_jni_bridge.c | 17 ++--------------- .../jni_bridge/android_jni_bridge.h | 5 +++-- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/tools/chatgui-android/jni_bridge/android_jni_bridge.c b/tools/chatgui-android/jni_bridge/android_jni_bridge.c index cd1c433c..53f665f1 100644 --- a/tools/chatgui-android/jni_bridge/android_jni_bridge.c +++ b/tools/chatgui-android/jni_bridge/android_jni_bridge.c @@ -1366,21 +1366,8 @@ void utun_bridge_on_network_change(void) { bridge_log(BLEV_DEBUG, "network change notified to auto_socket"); } -static void bridge_set_active_trampoline(void* arg) { - int active = (int)(intptr_t)arg; - struct UTUN_INSTANCE* inst = instance_lite_get_instance(); - if (!inst) return; - if (utun_set_client_activity(inst, active) < 0) { - bridge_log(BLEV_ERROR, "client_activity transition failed requested=%s", active ? "ACTIVE" : "STANDBY"); - return; - } - bridge_log(BLEV_DEBUG, "client_activity set to %s", active ? "ACTIVE" : "STANDBY"); -} - -void utun_bridge_set_active(int active) { - struct UASYNC* ua = instance_lite_get_uasync(); - if (!ua) return; - uasync_post(ua, bridge_set_active_trampoline, (void*)(intptr_t)active); +int utun_bridge_set_active(int active) { + return instance_lite_set_active(active); } static void bridge_notify_network_active_trampoline(void* arg) { diff --git a/tools/chatgui-android/jni_bridge/android_jni_bridge.h b/tools/chatgui-android/jni_bridge/android_jni_bridge.h index 9ba266b9..1e93c25a 100644 --- a/tools/chatgui-android/jni_bridge/android_jni_bridge.h +++ b/tools/chatgui-android/jni_bridge/android_jni_bridge.h @@ -252,10 +252,11 @@ char* utun_bridge_get_local_sockets_json(void); void utun_bridge_on_network_change(void); /* Поставить запрос client_activity в uasync: active!=0 — ACTIVE, 0 — STANDBY. - * Возврат не подтверждает применение; utun_set_client_activity учитывает удержание трансляций, + * 0 — команда поставлена живому worker под защитой его владельца; -1 — отказ с диагностикой. + * При stop ожидающая команда может отмениться. Возврат не подтверждает применение; ядро учитывает удержание трансляций, * ошибки перехода логирует trampoline в потоке ядра. */ -void utun_bridge_set_active(int active); +int utun_bridge_set_active(int active); /* Поставить уведомление standby в uasync; досрочный wake только в SLEEP после min_sleep. */