diff --git a/Source/Common/Processor/Mapping/Output/MappingOutputManager.cpp b/Source/Common/Processor/Mapping/Output/MappingOutputManager.cpp index be886b18f..a211695e5 100644 --- a/Source/Common/Processor/Mapping/Output/MappingOutputManager.cpp +++ b/Source/Common/Processor/Mapping/Output/MappingOutputManager.cpp @@ -50,7 +50,8 @@ void MappingOutputManager::setOutParams(Array params, int multiplex outParams.set(multiplexIndex, Array>(params.getRawDataPointer(), params.size())); if(outParams.size() > 0) for (auto &o : items) o->setOutParams(outParams[multiplexIndex], multiplexIndex); //better than this ? should handle all ? - prevMergedValue = getMergedOutValue(multiplexIndex); + prevMergedValue.ensureStorageAllocated(multiplexIndex+1); + prevMergedValue.set(multiplexIndex, getMergedOutValue(multiplexIndex)); omAsyncNotifier.addMessage(new OutputManagerEvent(OutputManagerEvent::OUTPUT_CHANGED)); } @@ -60,10 +61,10 @@ void MappingOutputManager::updateOutputValues(int multiplexIndex, bool sendOnOut { var value = getMergedOutValue(multiplexIndex); if (value.isVoid()) return; //possible if parameters have been deleted in another thread during process - if (sendOnOutputChangedOnly && value == prevMergedValue) return; + if (sendOnOutputChangedOnly && value == prevMergedValue[multiplexIndex]) return; for (auto& i : items) i->setValue(value, multiplexIndex); - prevMergedValue = value; + prevMergedValue.set(multiplexIndex, value); } void MappingOutputManager::updateOutputValue(MappingOutput * o, int multiplexIndex) diff --git a/Source/Common/Processor/Mapping/Output/MappingOutputManager.h b/Source/Common/Processor/Mapping/Output/MappingOutputManager.h index 645fc2695..c2ac01708 100644 --- a/Source/Common/Processor/Mapping/Output/MappingOutputManager.h +++ b/Source/Common/Processor/Mapping/Output/MappingOutputManager.h @@ -22,7 +22,7 @@ class MappingOutputManager : bool forceDisabled; Array>> outParams; - var prevMergedValue; + Array prevMergedValue; void clear() override;