示例#1
0
int
FrameViewRequest::markDependencyAsRendered(const TreeRenderExecutionDataPtr& request, const FrameViewRequestPtr& deps)
{

    FrameViewRequestStatusEnum status = getStatus();
    QMutexLocker k(&_imp->lock);
    PerLaunchRequestData& data = _imp->requestData[request];

    // If this FrameViewRequest is pass-through, copy results from the pass-through dependency
    if (status == eFrameViewRequestStatusPassThrough) {
        assert(deps && data.dependencies.size() == 1 && *data.dependencies.begin() == deps);
        _imp->requestedScaleImage = deps->getRequestedScaleImagePlane();
        _imp->fullScaleImage = _imp->requestedScaleImage;
        _imp->finalRoi = deps->getCurrentRoI();
    }

    std::set<FrameViewRequestPtr>::iterator foundDep = data.dependencies.find(deps);
    if (foundDep != data.dependencies.end()) {
        // The dependency might not exist if we did not call addDependency.
        // This may happen if we were aborted
        data.dependencies.erase(foundDep);
        data.renderedDependencies.insert(deps);
    }
    return data.dependencies.size();
}