- AliHLTComponentBlockDataList segments;
- for (AliHLTUInt32_t oblock=0; oblock<outputBlockCnt; oblock++) {
- AliHLTUInt32_t iblock=0;
- for (; iblock<evtData.fBlockCnt; iblock++) {
- if (fBlockDataArray[iblock].fPtr==outputBlocks[oblock].fPtr) {
- assert(subscribedTaskList[iblock]!=NULL);
- if (subscribedTaskList[iblock]==NULL) continue;
- HLTDebug("forward segment %d (source task %s %p) to data buffer %p", iblock, pSrcTask->GetName(), pSrcTask, fpDataBuffer);
- fpDataBuffer->Forward(subscribedTaskList[iblock], &fBlockDataArray[iblock]);
- subscribedTaskList[iblock]=NULL; // not to be released in the loop further down
- break;
+ if (fListTargets.First()!=NULL) {
+ AliHLTComponentBlockDataList segments;
+ for (AliHLTUInt32_t oblock=0; oblock<outputBlockCnt; oblock++) {
+ AliHLTUInt32_t iblock=0;
+ for (; iblock<evtData.fBlockCnt; iblock++) {
+ if (fBlockDataArray[iblock].fPtr==outputBlocks[oblock].fPtr) {
+ assert(subscribedTaskList[iblock]!=NULL);
+ if (subscribedTaskList[iblock]==NULL) continue;
+ HLTDebug("forward segment %d (source task %s %p) to data buffer %p", iblock, pSrcTask->GetName(), pSrcTask, fpDataBuffer);
+ fpDataBuffer->Forward(subscribedTaskList[iblock], &fBlockDataArray[iblock]);
+ subscribedTaskList[iblock]=NULL; // not to be released in the loop further down
+ break;
+ }
+ }
+ if (iblock==evtData.fBlockCnt) segments.push_back(outputBlocks[oblock]);
+ if (pTgtBuffer && segments.size()>0) {
+ iResult=fpDataBuffer->SetSegments(pTgtBuffer, &segments[0], segments.size());