fix isolate on wrong thread

This commit is contained in:
王劲鹏
2021-04-06 19:25:51 +08:00
committed by osborn
parent c01bd1e98c
commit ac39073551
2 changed files with 10 additions and 6 deletions

View File

@@ -63,10 +63,12 @@ DoricJSEngine::DoricJSEngine(QObject *parent) : QObject(parent) {
// inject timer set & clear
DoricTimerExtension *timerExtension =
new DoricTimerExtension([this](long timerId) {
QVariantList arguments;
arguments.push_back(QVariant((int)timerId));
this->invokeDoricMethod(DoricConstant::DORIC_TIMER_CALLBACK,
arguments);
auto result = QtConcurrent::run(&mJSThreadPool, [this, timerId] {
QVariantList arguments;
arguments.push_back(QVariant((int)timerId));
this->invokeDoricMethod(DoricConstant::DORIC_TIMER_CALLBACK,
arguments);
});
});
mJSE->injectGlobalJSFunction(DoricConstant::INJECT_TIMER_SET,
timerExtension, "setTimer");
@@ -98,8 +100,7 @@ void DoricJSEngine::prepareContext(QString contextId, QString script,
mJSE->loadJS(packageContextScript(contextId, script), "Context://" + source);
}
void DoricJSEngine::invokeDoricMethod(QString method,
QVariantList arguments) {
void DoricJSEngine::invokeDoricMethod(QString method, QVariantList arguments) {
return mJSE->invokeObject(DoricConstant::GLOBAL_DORIC, method, arguments);
}