在firebreath中被其他调用阻止的Javascript调用

时间:2014-02-13 11:10:21

标签: javascript c++ boost firebreath

我用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”?

0 个答案:

没有答案