void avtOriginatingSource::InitPipeline(avtContract_p spec) { if (!ArtificialPipeline()) { if (!CanDoStreaming()) { spec->NoStreaming(); } // // Determine if the data specification is *all* of the data. This is // important to things like facelists. // avtDataRequest_p data = spec->GetDataRequest(); bool uad = data->GetSIL().UsesAllData(); GetOutput()->GetInfo().GetValidity().SetUsingAllData(uad); bool uadom = data->GetSIL().UsesAllDomains(); GetOutput()->GetInfo().GetValidity().SetUsingAllDomains(uadom); if (initializeProgressCallback != NULL && streamingCheckFunction != NULL) { // // Each filter is a stage, plus a stage to get the data. // With streaming, there are only calculate/send stages. // int nstages; if (streamingCheckFunction(streamingCheckFunctionArgs,spec)) { nstages = 1; GetOutput()->GetInfo().GetValidity().SetWhetherStreaming(true); } else { int sourceStages = NumStagesForFetch(data); nstages = spec->GetNFilters() + sourceStages; GetOutput()->GetInfo().GetValidity().SetWhetherStreaming(false); if (numberOfExecutions > 1) nstages *= numberOfExecutions; } bool shouldIssue = false; if (numberOfExecutions <= 1) shouldIssue = true; else if (numberOfExecutions > 1) { if (!haveIssuedProgress) { shouldIssue = true; haveIssuedProgress = true; } } if (shouldIssue) initializeProgressCallback(initializeProgressCallbackArgs, nstages); } } }