fix: start stats polling before blocking startSignaling call
This commit is contained in:
@@ -171,18 +171,19 @@ class CallViewModel : ViewModel(), WzpCallback {
|
|||||||
val seed = _seedHex.value
|
val seed = _seedHex.value
|
||||||
val alias = _alias.value
|
val alias = _alias.value
|
||||||
|
|
||||||
// Use a Java Thread with 8MB stack — Kotlin's IO dispatcher threads are too small
|
// Start stats polling BEFORE blocking — startSignaling blocks the thread forever
|
||||||
// for the native JNI + Rust + TLS stack requirements
|
startStatsPolling()
|
||||||
|
|
||||||
|
// Use a Java Thread with 8MB stack — blocks forever in signal recv loop
|
||||||
val resolvedRelay = resolveToIp(relay) ?: relay
|
val resolvedRelay = resolveToIp(relay) ?: relay
|
||||||
Thread(null, {
|
Thread(null, {
|
||||||
val result = engine?.startSignaling(resolvedRelay, seed, "", alias)
|
val result = engine?.startSignaling(resolvedRelay, seed, "", alias)
|
||||||
|
// Only reached if signaling disconnects
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
if (result == 0) {
|
if (result != 0) {
|
||||||
_signalState.value = 5 // Registered
|
_errorMessage.value = "Signal connection lost"
|
||||||
startStatsPolling()
|
|
||||||
} else {
|
|
||||||
_errorMessage.value = "Failed to register on relay"
|
|
||||||
}
|
}
|
||||||
|
_signalState.value = 0
|
||||||
}
|
}
|
||||||
}, "wzp-register", 8 * 1024 * 1024).start()
|
}, "wzp-register", 8 * 1024 * 1024).start()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user