diff options
author | Carl Hetherington <carl@carlh.net> | 2010-02-10 01:38:20 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-02-10 01:38:20 +0000 |
commit | 3c00a7ca2ae34cb65c8d3394d9a012f20c69ee77 (patch) | |
tree | 54257f7655152fab7fbe97a75ce24faf15485d49 /libs/ardour/region.cc | |
parent | c9d433d9b3f166e761bfc1b4765cc51b0a521e7d (diff) |
Move ARDOUR::Change into PBD so that Stateful can be aware of
what Change a State reflects. Hence allow Stateful to do some
of the work of set/get_state in Region.
git-svn-id: svn://localhost/ardour2/branches/3.0@6671 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/region.cc')
-rw-r--r-- | libs/ardour/region.cc | 96 |
1 files changed, 32 insertions, 64 deletions
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index e9b896f26e..52137f9af2 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -46,13 +46,13 @@ using namespace std; using namespace ARDOUR; using namespace PBD; -Change Region::FadeChanged = ARDOUR::new_change (); -Change Region::SyncOffsetChanged = ARDOUR::new_change (); -Change Region::MuteChanged = ARDOUR::new_change (); -Change Region::OpacityChanged = ARDOUR::new_change (); -Change Region::LockChanged = ARDOUR::new_change (); -Change Region::LayerChanged = ARDOUR::new_change (); -Change Region::HiddenChanged = ARDOUR::new_change (); +Change Region::FadeChanged = PBD::new_change (); +Change Region::SyncOffsetChanged = PBD::new_change (); +Change Region::MuteChanged = PBD::new_change (); +Change Region::OpacityChanged = PBD::new_change (); +Change Region::LockChanged = PBD::new_change (); +Change Region::LayerChanged = PBD::new_change (); +Change Region::HiddenChanged = PBD::new_change (); PBD::Signal1<void,boost::shared_ptr<ARDOUR::Region> > Region::RegionPropertyChanged; @@ -70,13 +70,13 @@ Region::Region (Session& s, nframes_t start, nframes_t length, const string& nam : SessionObject(s, name) , _type(type) , _flags(Flag (flags|DoNotSendPropertyChanges)) - , _start (X_("start"), start) + , _start (X_("start"), StartChanged, start) , _length(length) - , _position (X_("position"), 0) + , _position (X_("position"), PositionChanged, 0) , _last_position(0) , _positional_lock_style(AudioTime) , _sync_position(_start) - , _layer (X_("layer"), layer) + , _layer (X_("layer"), LayerChanged, layer) , _first_edit(EditChangesNothing) , _frozen(0) , _ancestral_start (0) @@ -98,13 +98,13 @@ Region::Region (boost::shared_ptr<Source> src, nframes_t start, nframes_t length : SessionObject(src->session(), name) , _type(type) , _flags(Flag (flags|DoNotSendPropertyChanges)) - , _start (X_("start"), start) + , _start (X_("start"), StartChanged, start) , _length(length) - , _position (X_("position"), 0) + , _position (X_("position"), PositionChanged, 0) , _last_position(0) , _positional_lock_style(AudioTime) , _sync_position(_start) - , _layer (X_("layer"), layer) + , _layer (X_("layer"), LayerChanged, layer) , _first_edit(EditChangesNothing) , _frozen(0) , _ancestral_start (0) @@ -133,13 +133,13 @@ Region::Region (const SourceList& srcs, nframes_t start, nframes_t length, const : SessionObject(srcs.front()->session(), name) , _type(type) , _flags(Flag (flags|DoNotSendPropertyChanges)) - , _start (X_("start"), start) + , _start (X_("start"), StartChanged, start) , _length(length) - , _position (X_("position"), 0) + , _position (X_("position"), PositionChanged, 0) , _last_position(0) , _positional_lock_style(AudioTime) , _sync_position(_start) - , _layer (X_("layer"), layer) + , _layer (X_("layer"), LayerChanged, layer) , _first_edit(EditChangesNothing) , _frozen(0) , _ancestral_start (0) @@ -161,9 +161,9 @@ Region::Region (const SourceList& srcs, nframes_t start, nframes_t length, const Region::Region (boost::shared_ptr<const Region> other, nframes_t offset, nframes_t length, const string& name, layer_t layer, Flag flags) : SessionObject(other->session(), name) , _type (other->data_type()) - , _start (X_("start"), 0) - , _position (X_("position"), 0) - , _layer (X_("layer"), 0) + , _start (X_("start"), StartChanged, 0) + , _position (X_("position"), PositionChanged, 0) + , _layer (X_("layer"), LayerChanged, 0) , _pending_explicit_relayer (false) { @@ -206,9 +206,9 @@ Region::Region (boost::shared_ptr<const Region> other, nframes_t offset, nframes Region::Region (boost::shared_ptr<const Region> other, nframes_t length, const string& name, layer_t layer, Flag flags) : SessionObject(other->session(), name) , _type (other->data_type()) - , _start (X_("start"), 0) - , _position (X_("position"), 0) - , _layer (X_("layer"), 0) + , _start (X_("start"), StartChanged, 0) + , _position (X_("position"), PositionChanged, 0) + , _layer (X_("layer"), LayerChanged, 0) , _pending_explicit_relayer (false) { register_states (); @@ -306,13 +306,13 @@ Region::Region (const SourceList& srcs, const XMLNode& node) : SessionObject(srcs.front()->session(), X_("error: XML did not reset this")) , _type(DataType::NIL) // to be loaded from XML , _flags(DoNotSendPropertyChanges) - , _start (X_("start"), 0) + , _start (X_("start"), StartChanged, 0) , _length(0) - , _position (X_("position"), 0) + , _position (X_("position"), PositionChanged, 0) , _last_position(0) , _positional_lock_style(AudioTime) , _sync_position(_start) - , _layer (X_("layer"), 0) + , _layer (X_("layer"), LayerChanged, 0) , _first_edit(EditChangesNothing) , _frozen(0) , _stretch(1.0) @@ -338,13 +338,13 @@ Region::Region (boost::shared_ptr<Source> src, const XMLNode& node) : SessionObject(src->session(), X_("error: XML did not reset this")) , _type(DataType::NIL) , _flags(DoNotSendPropertyChanges) - , _start (X_("start"), 0) + , _start (X_("start"), StartChanged, 0) , _length(0) - , _position (X_("position"), 0) + , _position (X_("position"), PositionChanged, 0) , _last_position(0) , _positional_lock_style(AudioTime) , _sync_position(_start) - , _layer (X_("layer"), 0) + , _layer (X_("layer"), LayerChanged, 0) , _first_edit(EditChangesNothing) , _frozen(0) , _stretch(1.0) @@ -1092,16 +1092,14 @@ Region::state (bool /*full_state*/) char buf[64]; const char* fe = NULL; + add_states (*node); + _id.print (buf, sizeof (buf)); node->add_property ("id", buf); node->add_property ("name", _name); node->add_property ("type", _type.to_string()); - snprintf (buf, sizeof (buf), "%u", _start.get ()); - node->add_property ("start", buf); snprintf (buf, sizeof (buf), "%u", _length); node->add_property ("length", buf); - snprintf (buf, sizeof (buf), "%u", _position.get ()); - node->add_property ("position", buf); snprintf (buf, sizeof (buf), "%" PRIi64, _ancestral_start); node->add_property ("ancestral-start", buf); snprintf (buf, sizeof (buf), "%" PRIi64, _ancestral_length); @@ -1130,8 +1128,6 @@ Region::state (bool /*full_state*/) /* note: flags are stored by derived classes */ - snprintf (buf, sizeof (buf), "%d", (int) _layer.get()); - node->add_property ("layer", buf); snprintf (buf, sizeof (buf), "%" PRIu32, _sync_position); node->add_property ("sync-position", buf); @@ -1172,15 +1168,6 @@ Region::set_live_state (const XMLNode& node, int /*version*/, Change& what_chang _type = DataType(prop->value()); } - if ((prop = node.property ("start")) != 0) { - sscanf (prop->value().c_str(), "%" PRIu32, &val); - if (val != _start) { - what_changed = Change (what_changed|StartChanged); - cerr << _name << " start changed\n"; - _start = val; - } - } - if ((prop = node.property ("length")) != 0) { sscanf (prop->value().c_str(), "%" PRIu32, &val); if (val != _length) { @@ -1191,26 +1178,6 @@ Region::set_live_state (const XMLNode& node, int /*version*/, Change& what_chang } } - if ((prop = node.property ("position")) != 0) { - sscanf (prop->value().c_str(), "%" PRIu32, &val); - if (val != _position) { - what_changed = Change (what_changed|PositionChanged); - cerr << _name << " position changed\n"; - _last_position = _position; - _position = val; - } - } - - if ((prop = node.property ("layer")) != 0) { - layer_t x; - x = (layer_t) atoi (prop->value().c_str()); - if (x != _layer) { - what_changed = Change (what_changed|LayerChanged); - cerr << _name << " layer changed\n"; - _layer = x; - } - } - if ((prop = node.property ("sync-position")) != 0) { sscanf (prop->value().c_str(), "%" PRIu32, &val); if (val != _sync_position) { @@ -1309,7 +1276,6 @@ int Region::set_state (const XMLNode& node, int version) { const XMLProperty *prop; - Change what_changed = Change (0); /* ID is not allowed to change, ever */ @@ -1319,6 +1285,8 @@ Region::set_state (const XMLNode& node, int version) _first_edit = EditChangesNothing; + Change what_changed = set_state_using_states (node); + set_live_state (node, version, what_changed, true); return 0; |