From aa3c5043455be094d7de2f70800ffcaff8daac8e Mon Sep 17 00:00:00 2001 From: David Rose Date: Sun, 27 May 2007 02:47:54 +0000 Subject: [PATCH] small optimizations to PandaNode etc. --- panda/src/pgraph/pandaNode.cxx | 46 ++++++++++++++--------------- panda/src/putil/copyOnWriteObject.h | 4 +++ 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/panda/src/pgraph/pandaNode.cxx b/panda/src/pgraph/pandaNode.cxx index 3186058cb2..0c1f1bece7 100644 --- a/panda/src/pgraph/pandaNode.cxx +++ b/panda/src/pgraph/pandaNode.cxx @@ -146,10 +146,7 @@ PandaNode(const PandaNode ©) : if (cdata->_transform != cdata->_prev_transform) { set_dirty_prev_transform(); } - } - { - CDReader copy_cdata(copy._cycler); - CDWriter cdata(_cycler, true); + cdata->_effects = copy_cdata->_effects; cdata->_tag_data = copy_cdata->_tag_data; cdata->_draw_control_mask = copy_cdata->_draw_control_mask; @@ -3611,29 +3608,30 @@ fillin_recorder(DatagramIterator &scan, BamReader *) { // Description: //////////////////////////////////////////////////////////////////// PandaNode::CData:: -CData() { - _state = RenderState::make_empty(); - _transform = TransformState::make_identity(); - _prev_transform = TransformState::make_identity(); +CData() : + _state(RenderState::make_empty()), + _transform(TransformState::make_identity()), + _prev_transform(TransformState::make_identity()), - _effects = RenderEffects::make_empty(); - _draw_control_mask = DrawMask::all_off(); - _draw_show_mask = DrawMask::all_on(); - _into_collide_mask = CollideMask::all_off(); - _user_bounds = NULL; - _internal_bounds = NULL; - _internal_bounds_stale = true; - _final_bounds = false; - _fancy_bits = 0; + _effects(RenderEffects::make_empty()), + _draw_control_mask(DrawMask::all_off()), + _draw_show_mask(DrawMask::all_on()), + _into_collide_mask(CollideMask::all_off()), + _user_bounds(NULL), + _internal_bounds(NULL), + _internal_bounds_stale(true), + _final_bounds(false), + _fancy_bits(0), - _net_collide_mask = CollideMask::all_off(); - _net_draw_control_mask = DrawMask::all_off(); - _net_draw_show_mask = DrawMask::all_off(); + _net_collide_mask(CollideMask::all_off()), + _net_draw_control_mask(DrawMask::all_off()), + _net_draw_show_mask(DrawMask::all_off()), + + _down(new PandaNode::Down(PandaNode::get_class_type())), + _stashed(new PandaNode::Down(PandaNode::get_class_type())), + _up(new PandaNode::Up(PandaNode::get_class_type())) +{ ++_next_update; - - _down = new PandaNode::Down(PandaNode::get_class_type()); - _stashed = new PandaNode::Down(PandaNode::get_class_type()); - _up = new PandaNode::Up(PandaNode::get_class_type()); } //////////////////////////////////////////////////////////////////// diff --git a/panda/src/putil/copyOnWriteObject.h b/panda/src/putil/copyOnWriteObject.h index a7d12cfbe2..eb6c0e6f57 100644 --- a/panda/src/putil/copyOnWriteObject.h +++ b/panda/src/putil/copyOnWriteObject.h @@ -95,6 +95,7 @@ public: INLINE CopyOnWriteObj(); INLINE CopyOnWriteObj(const Base ©); INLINE CopyOnWriteObj(const CopyOnWriteObj ©); + ALLOC_DELETED_CHAIN(CopyOnWriteObj); protected: virtual PT(CopyOnWriteObject) make_cow_copy(); @@ -129,6 +130,9 @@ public: INLINE CopyOnWriteObj1(const Base ©); INLINE CopyOnWriteObj1(const CopyOnWriteObj1 ©); + typedef CopyOnWriteObj1 ThisClass; + ALLOC_DELETED_CHAIN(ThisClass) + protected: virtual PT(CopyOnWriteObject) make_cow_copy();