#include "ardour/session.h"
#include "ardour/solo_isolate_control.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace ARDOUR;
using namespace std;
}
void
-SoloIsolateControl::master_changed (bool from_self, PBD::Controllable::GroupControlDisposition gcd, boost::shared_ptr<AutomationControl>)
+SoloIsolateControl::master_changed (bool from_self, PBD::Controllable::GroupControlDisposition gcd, boost::weak_ptr<AutomationControl>)
{
if (!_soloable.can_solo()) {
return;
}
if (solo_isolated() != old) {
- /* solo isolated status changed */
- _muteable.mute_master()->set_solo_ignore (solo_isolated());
Changed (false, Controllable::NoGroup); /* EMIT SIGNAL */
}
}
*/
AutomationControl::actually_set_value (val, gcd);
- _session.set_dirty ();
}
void
if (yn) {
if (_solo_isolated == false) {
- _muteable.mute_master()->set_solo_ignore (true);
changed = true;
}
_solo_isolated = true;
} else {
if (_solo_isolated == true) {
_solo_isolated = false;
- _muteable.mute_master()->set_solo_ignore (false);
changed = true;
}
}
SoloIsolateControl::get_value () const
{
if (slaved()) {
- Glib::Threads::RWLock::ReaderLock lm (master_lock);
- return get_masters_value_locked () ? 1.0 : 0.0;
+ return solo_isolated() || get_masters_value ();
}
if (_list && boost::dynamic_pointer_cast<AutomationList>(_list)->automation_playback()) {
return AutomationControl::get_value();
}
- return solo_isolated () ? 1.0 : 0.0;
+ return solo_isolated ();
}
int
-SoloIsolateControl::set_state (XMLNode const & node, int)
+SoloIsolateControl::set_state (XMLNode const & node, int version)
{
- XMLProperty const * prop;
-
- if ((prop = node.property ("solo-isolated")) != 0) {
- _solo_isolated = string_is_affirmative (prop->value());
+ if (SlavableAutomationControl::set_state(node, version)) {
+ return -1;
}
+ node.get_property ("solo-isolated", _solo_isolated);
return 0;
}
SoloIsolateControl::get_state ()
{
XMLNode& node (SlavableAutomationControl::get_state());
- node.add_property (X_("solo-isolated"), _solo_isolated ? X_("yes") : X_("no"));
+ node.set_property (X_("solo-isolated"), _solo_isolated);
return node;
}