10.12., 9:00 - 11:00: Due to updates GitLab may be unavailable for some minutes between 09:00 and 11:00.

* Fixed AutoEvaluationPipeline not invalidating shared properties in onDataContainerDataAdded().

* Fixed AdvOptimizedRaycaster::updateProperties overload.
parent 39c9c61e
......@@ -127,6 +127,17 @@ namespace campvis {
}
}
namespace {
/// Local helper function to recursively emit the s_changed signal for the given
/// properties and all of its shared properties.
void recursiveEmitSignal(DataNameProperty* p) {
std::set<AbstractProperty*> v = p->getSharedProperties();
for (auto it = v.begin(); it != v.end(); ++it)
recursiveEmitSignal(static_cast<DataNameProperty*>(*it));
p->s_changed.emitSignal(p);
}
}
void AutoEvaluationPipeline::onDataContainerDataAdded(std::string name, DataHandle dh) {
{
// acquire read lock
......@@ -136,7 +147,7 @@ namespace campvis {
PortMapType::const_iterator it = _portMap.find(name);
while (it != _portMap.end() && it->first == name) {
// invalidate those properties by emitting changed signal
it->second->s_changed.emitSignal(it->second);
recursiveEmitSignal(it->second);
++it;
}
}
......
......@@ -46,7 +46,7 @@ namespace campvis {
addProperty(p_lightId);
setPropertyInvalidationLevel(p_transferFunction, INVALID_BBV | INVALID_RESULT);
setPropertyInvalidationLevel(p_sourceImageID, INVALID_BBV | INVALID_RESULT);
setPropertyInvalidationLevel(p_sourceImageID, INVALID_BBV | INVALID_PROPERTIES | INVALID_RESULT);
decoratePropertyCollection(this);
}
......@@ -129,7 +129,8 @@ namespace campvis {
return toReturn;
}
void AdvOptimizedRaycaster::updateProperties() {
void AdvOptimizedRaycaster::updateProperties(DataContainer& dataContainer) {
RaycastingProcessor::updateProperties(dataContainer);
validate(AbstractProcessor::INVALID_PROPERTIES);
}
......
......@@ -78,12 +78,13 @@ namespace campvis {
DataNameProperty p_lightId; ///< Name/ID for the LightSource to use
protected:
/// \see HasProperyCollection::updateProperties()
virtual void updateProperties();
/// \see RaycastingProcessor::processImpl()
virtual void processImpl(DataContainer& data, ImageRepresentationGL::ScopedRepresentation& image);
/// \see RaycastingProcessor::updateProperties
virtual void updateProperties(DataContainer& dataContainer);
/// \see RaycastingProcessor::generateHeader()
virtual std::string generateHeader() const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment