X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcanvas%2FCanvas.cxx;h=3112fcb3b9133eb7f5628c4b10adbdf9e8b1f61c;hb=9be53e746f477e7612b7145eb397d415f773ffa5;hp=350fdf9563edec6521d2e888c122a80aa91720b6;hpb=8b6f50d0cc88fd49d453373f846c5733bb5d288b;p=simgear.git diff --git a/simgear/canvas/Canvas.cxx b/simgear/canvas/Canvas.cxx index 350fdf95..3112fcb3 100644 --- a/simgear/canvas/Canvas.cxx +++ b/simgear/canvas/Canvas.cxx @@ -18,6 +18,7 @@ #include "Canvas.hxx" #include +#include #include #include @@ -382,6 +383,21 @@ namespace canvas if( node->getParent()->getParent() == _node && node->getParent()->getNameString() == "placement" ) { + bool placement_dirty = false; + BOOST_FOREACH(Placements& placements, _placements) + { + BOOST_FOREACH(PlacementPtr& placement, placements) + { + // check if change can be directly handled by placement + if( placement->getProps() == node->getParent() + && !placement->childChanged(node) ) + placement_dirty = true; + } + } + + if( !placement_dirty ) + return; + // prevent double updates... for( size_t i = 0; i < _dirty_placements.size(); ++i ) {