我用firebreath构建一个插件,我试图同时调用两个函数,多次使用回调。但是当我在插件中执行该功能时会触发,但是在所有多个插件函数调用之后,javascript调用会触发,这必须要迟到。
这些是我需要同步启动的调用:
FBLOG_INFO("drawCalibration()", "Fire Calibration = (" + boost::lexical_cast<std::string>(xPos) + "," + boost::lexical_cast<std::string>(yPos) + ")");
_tracker->addCalibrationPointAsync(point, boost::bind(&TobiiWrapper::pointCompleted, this));
_parent->fireAsyncEvent("oncalibration", FB::variant_list_of(xPos)(yPos));
“pointCompleted”基本上只调用此函数:
void TobiiWrapper::startNextOrFinish() {
if(m_calibrationPoints.size() > 0) {
Point2d point = m_calibrationPoints.front();
m_calibrationPoints.pop();
boost::thread t(boost::bind(&TobiiWrapper::drawCalibrationPoint, this, point, callback));
boost::this_thread::sleep(boost::posix_time::milliseconds(CALIBRATION_POINT_INTERVAL));
} else {
_tracker->computeCalibrationAsync(boost::bind(&TobiiWrapper::computeCompleted,this,_1));
}
}
线程t中的回调只是尝试使用InvokeAsync函数。我尝试过的是使用
callback->InvokeAsync("oncalibration", FB::variant_list_of(xPos)(yPos));
但这只是因为这个错误而崩溃“shared_ptr Assertion px!= 0 failed”
如何同步调用addCalibrationPoint和javascript函数“oncalibration”?