Preserve bridge callbacks until native worker shutdown succeeds
This commit is contained in:
1 parent
d83d58c874
commit
d6ea893f16
3 files changed
+9
-7
No files matched your search
@@ -77,11 +77,11 @@ static int check_bridge_config(void) {
|
||||
REQUIRE(utun_bridge_init(NULL, 0, NULL, NULL, &config));
|
||||
REQUIRE(cfg_get_int(CFG_KEY_CONTROL_PORT, -1) == 4321);
|
||||
REQUIRE(cfg_get_string(CFG_KEY_NODE_NAME, NULL) == NULL && cfg_get_int64("wide", 789) == 789);
|
||||
utun_bridge_destroy();
|
||||
REQUIRE(!utun_bridge_destroy());
|
||||
REQUIRE(cfg_get_int(CFG_KEY_CONTROL_PORT, 9999) == 9999);
|
||||
REQUIRE(utun_bridge_init(NULL, 0, NULL, NULL, NULL));
|
||||
REQUIRE(cfg_get_int(CFG_KEY_CONTROL_PORT, 9998) == 9998);
|
||||
utun_bridge_destroy();
|
||||
REQUIRE(!utun_bridge_destroy());
|
||||
printf("[PASS] bridge config: init, replacement, destroy and reinit\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -166,15 +166,16 @@ bool utun_bridge_init(const char* db_path, int control_port,
|
||||
return true;
|
||||
}
|
||||
|
||||
void utun_bridge_destroy(void) {
|
||||
int utun_bridge_destroy(void) {
|
||||
if (instance_lite_stop()) { bridge_log(BLEV_ERROR, "bridge destroy refused: worker is not joined"); return -1; }
|
||||
voice_recorder_deinit();
|
||||
instance_lite_stop();
|
||||
utun_config_set_provider(NULL);
|
||||
g_on_log = NULL;
|
||||
g_cfg_string = NULL;
|
||||
g_cfg_int64 = NULL;
|
||||
g_cfg_int = NULL;
|
||||
bridge_log(BLEV_INFO, "bridge destroy");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Удалять только после остановки ядра: отсутствие файла нормально, остальные ошибки не скрывать. */
|
||||
|
||||
@@ -59,11 +59,12 @@ int utun_bridge_start(const char* config_text);
|
||||
* При частичном отказе проверяет остальные файлы; каждую ошибку и итоговые счётчики пишет в лог. */
|
||||
int utun_bridge_clear_database(const char* db_path);
|
||||
|
||||
/* Освободить recorder, вызвать instance_lite_stop и снять C log/config callbacks.
|
||||
/* Полностью остановить/join worker, освободить recorder и снять C log/config callbacks.
|
||||
* Config-provider сбрасывается к defaults; повторный init начинает новую регистрацию.
|
||||
* Перед вызовом остановить внешние media workers/DSP; ограничения ожидания — instance_lite.h.
|
||||
* Перед вызовом остановить внешние media workers/DSP, ждать вне UI; контракт ожидания — instance_lite.h.
|
||||
* 0 — очистка завершена; -1 — stop/join отклонён, recorder и callbacks сохранены, новый init запрещён.
|
||||
* JNI nativeStop дополнительно останавливает UDP-лог, nativeDestroy освобождает JNI global refs. */
|
||||
void utun_bridge_destroy(void);
|
||||
int utun_bridge_destroy(void);
|
||||
|
||||
/* ── Actions (Kotlin → C) ── */
|
||||
|
||||
|
||||
Reference in new issue
Block a user