Hi Stefan, thanks for your reply!
2012/5/13 Stefan Eilemann <[email protected]>: > If you've had a previous object which you are going to abandon, you have to > unmap/release it. The design looks somewhat fishy, since you're recreating > children objects when a child changes? I would expect this to happen only if > the child itself is a different object. You are right, I guess I didn't really think this through... This must also be the reason why manipulations on graph nodes are only passed on, if I set the dirty bits for children on all nodes residing above them in the graph. However I can't really figure out a way to implement a correct synchronization behavior, without creating a new node instance every time. For reference this is how my commit() / syc() implementation currently looks like in the DistNode class: co::uint128_t DistNode::commit( const uint32_t incarnation) { if(LeftChild) { _leftChildVersion = LeftChild->commit(incarnation); } if(RightSibling) { _rightSiblingVersion = RightSibling->commit(incarnation); } return co::Serializable::commit(incarnation); } co::uint128_t DistNode::sync( const co::uint128_t& version) { if(LeftChild) LeftChild->sync(_leftChildVersion); if(RightSibling) RightSibling->sync(_rightSiblingVersion); return co::Serializable::sync(version); } This approach seems to be the reason why I ran into this problem in the first place. I would be super happy, if you could give me some more advice on how to implement a correct commit / synchronization behavior for a distributed graph in Equalizer... Thanks and best regards, Matteo _______________________________________________ eq-dev mailing list [email protected] http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev http://www.equalizergraphics.com

