All plugin activate() method when required for copy & paste operations. Fixes segfau...
[ardour.git] / libs / ardour / route_group.cc
index 5cfc1fb3d08e7b3d82ebbd557e5f78d5ad64e096..f33a7f1f408763ada05943ec91bb9cdd9ea3c046 100644 (file)
@@ -137,8 +137,12 @@ RouteGroup::get_state (void)
 }
 
 int
-RouteGroup::set_state (const XMLNode& node)
+RouteGroup::set_state (const XMLNode& node, int version)
 {
+       if (version < 3000) {
+               return set_state_2X (node, version);
+       }
+
        const XMLProperty *prop;
 
        if ((prop = node.property ("name")) != 0) {
@@ -156,6 +160,28 @@ RouteGroup::set_state (const XMLNode& node)
        return 0;
 }
 
+int
+RouteGroup::set_state_2X (const XMLNode& node, int /*version*/)
+{
+       XMLProperty const * prop;
+
+       if ((prop = node.property ("name")) != 0) {
+               _name = prop->value();
+       }
+
+       if ((prop = node.property ("flags")) != 0) {
+               _flags = Flag (string_2_enum (prop->value(), _flags));
+       }
+
+       if (node.name() == "MixGroup") {
+               _properties = Property (Gain | Mute | Solo | RecEnable);
+       } else if (node.name() == "EditGroup") {
+               _properties = Property (Select | Edit);
+       }
+
+       return 0;
+}
+
 void
 RouteGroup::set_active (bool yn, void *src)
 {
@@ -241,7 +267,7 @@ RouteGroup::make_subgroup ()
 
        try {
                /* use master bus etc. to determine default nouts */
-               rl = _session.new_audio_route (nin, 2, 0, 1);
+               rl = _session.new_audio_route (false, nin, 2, 0, 1);
        } catch (...) {
                return;
        }