Cleanup fixes, v8 locking

This commit is contained in:
Kelvin
2026-01-31 19:23:32 +01:00
parent 8469f17b4c
commit c27f5e4096
@@ -9,6 +9,7 @@ import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.collection.emptyLongSet import androidx.collection.emptyLongSet
import com.caoccao.javet.annotations.V8Function import com.caoccao.javet.annotations.V8Function
import com.caoccao.javet.utils.JavetResourceUtils
import com.caoccao.javet.values.reference.V8ValueFunction import com.caoccao.javet.values.reference.V8ValueFunction
import com.futo.platformplayer.api.media.platforms.js.JSClient import com.futo.platformplayer.api.media.platforms.js.JSClient
import com.futo.platformplayer.api.media.platforms.js.SourcePluginConfig import com.futo.platformplayer.api.media.platforms.js.SourcePluginConfig
@@ -89,7 +90,9 @@ class PackageBrowser: V8Package {
} }
@V8Function @V8Function
fun deinitialize() { fun deinitialize() {
_browser?.destroy(); StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) {
_browser?.destroy();
}
_browser = null; _browser = null;
} }
@@ -140,7 +143,11 @@ class PackageBrowser: V8Package {
if(callbackId != null && callback != null) { if(callbackId != null && callback != null) {
synchronized(_callbacks) { synchronized(_callbacks) {
_callbacks.put(callbackId, { _callbacks.put(callbackId, {
funcClone?.callVoid(null, arrayOf(it)); _plugin.busy {
funcClone?.callVoid(null, arrayOf(it));
}
if (!_plugin.isStopped)
JavetResourceUtils.safeClose(funcClone);
}); });
} }
} }
@@ -169,7 +176,12 @@ class PackageBrowser: V8Package {
override fun onReceiveValue(value: String?) { override fun onReceiveValue(value: String?) {
Logger.i("PackageBrowser", "Browser run returned: " + (value ?: "")); Logger.i("PackageBrowser", "Browser run returned: " + (value ?: ""));
StateApp.instance.scopeOrNull?.launch(Dispatchers.IO) { StateApp.instance.scopeOrNull?.launch(Dispatchers.IO) {
funcClone?.callVoid(null, arrayOf(value)); Logger.i("PackageBrowser", "Invoking V8 with result (${funcClone != null})");
_plugin.busy {
funcClone?.callVoid(null, arrayOf(value));
}
if (!_plugin.isStopped)
JavetResourceUtils.safeClose(funcClone);
} }
} }
}) })