Relax assertion to allow rolling backwards into 0.
[ardour.git] / libs / ardour / monitor_control.cc
index a5907f769fb544d3866424ec453b17e8b4fcc7f4..633ceea928629669fc3ede861499684eeb69f204 100644 (file)
@@ -17,6 +17,7 @@
 */
 
 #include "ardour/monitor_control.h"
+#include "ardour/types_convert.h"
 
 #include "pbd/i18n.h"
 
@@ -36,30 +37,18 @@ MonitorControl::MonitorControl (Session& session, std::string const & name, Moni
        set_flags (Controllable::Flag (flags() | Controllable::RealTime));
 }
 
-bool
+void
 MonitorControl::actually_set_value (double val, Controllable::GroupControlDisposition gcd)
 {
-       int v = (int) val;
-       switch (v) {
-       case MonitorAuto:
-       case MonitorInput:
-       case MonitorDisk:
-       case MonitorCue:
-               break;
-       default:
-               /* illegal value */
-               return false;
-       }
-
-       _monitoring = MonitorChoice (v);
-       return AutomationControl::actually_set_value (val, gcd);
+       _monitoring = MonitorChoice ((int) val);
+       AutomationControl::actually_set_value (val, gcd);
 }
 
 XMLNode&
 MonitorControl::get_state ()
 {
        XMLNode& node (SlavableAutomationControl::get_state());
-       node.add_property (X_("monitoring"), enum_2_string (_monitoring));
+       node.set_property (X_("monitoring"), _monitoring);
        return node;
 }
 
@@ -68,11 +57,7 @@ MonitorControl::set_state (XMLNode const & node, int version)
 {
        SlavableAutomationControl::set_state (node, version);
 
-       const XMLProperty* prop;
-
-       if ((prop = node.property (X_("monitoring"))) != 0) {
-               _monitoring = MonitorChoice (string_2_enum (prop->value(), _monitoring));
-       } else {
+       if (!node.get_property (X_("monitoring"), _monitoring)) {
                _monitoring = MonitorAuto;
        }