mirror of
https://github.com/MetaCubeX/ClashMetaForAndroid.git
synced 2026-05-09 18:11:26 +08:00
unregister handler before delete global reference
This commit is contained in:
@@ -7,6 +7,8 @@ static std::pair<jobject, uint64_t> completableFutureWithToken(Master::Context *
|
||||
jobject completableFuture = context->newGlobalReference(context->newCompletableFuture());
|
||||
|
||||
EventQueue::getInstance()->registerHandler(COMPLETE, token, [completableFuture](const event_t *event) {
|
||||
EventQueue::getInstance()->unregisterHandler(COMPLETE, event->token);
|
||||
|
||||
Master::runWithAttached<int>([&](JNIEnv *env) -> int {
|
||||
Master::runWithContext<void>(env, [&](Master::Context *context) {
|
||||
if ( strlen(event->payload) == 0 ) {
|
||||
@@ -20,8 +22,6 @@ static std::pair<jobject, uint64_t> completableFutureWithToken(Master::Context *
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
EventQueue::getInstance()->unregisterHandler(COMPLETE, event->token);
|
||||
});
|
||||
|
||||
return {completableFuture, token};
|
||||
|
||||
@@ -29,6 +29,11 @@ Java_com_github_kr328_clash_core_bridge_Bridge_startTunDevice(JNIEnv *env, jclas
|
||||
});
|
||||
|
||||
EventQueue::getInstance()->registerHandler(TUN_STOP, token, [callbackGlobal](const event_t *e) {
|
||||
auto queue = EventQueue::getInstance();
|
||||
|
||||
queue->unregisterHandler(NEW_SOCKET, e->token);
|
||||
queue->unregisterHandler(TUN_STOP, e->token);
|
||||
|
||||
Master::runWithAttached<int>([&](JNIEnv *env) -> int {
|
||||
Master::runWithContext<void>(env, [&](Master::Context *context) {
|
||||
context->tunCallbackStop(callbackGlobal);
|
||||
@@ -37,11 +42,6 @@ Java_com_github_kr328_clash_core_bridge_Bridge_startTunDevice(JNIEnv *env, jclas
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
auto queue = EventQueue::getInstance();
|
||||
|
||||
queue->unregisterHandler(NEW_SOCKET, e->token);
|
||||
queue->unregisterHandler(TUN_STOP, e->token);
|
||||
});
|
||||
|
||||
char *exception = startTunDevice(fd, mtu, gatewayString, mirrorString, dnsString, token);
|
||||
|
||||
Reference in New Issue
Block a user