push back group state recall until after routes, so that routes who are the sole member of a group can resurrect their group for later

This commit is contained in:
Nikolaus Gullotta 2019-06-06 14:08:24 -05:00 committed by Nikolaus Gullotta
parent be5d9ace1f
commit 26344b324e
No known key found for this signature in database
GPG key ID: 565F60578092AA31

View file

@ -299,32 +299,6 @@ void MixerSnapshot::recall()
}
}
//groups
for(vector<State>::const_iterator i = group_states.begin(); i != group_states.end(); i++) {
if(!get_recall_groups()) {
break;
}
State state = (*i);
RouteGroup* group = _session->route_group_by_name(state.name);
if(!group) {
group = _session->new_route_group(state.name);
}
// state.node.remove_property(X_("routes"));
if(group) {
Stateful::ForceIDRegeneration fid;
uint32_t color;
state.node.get_property(X_("rgba"), color);
group->set_color(color);
group->set_state(state.node, Stateful::loading_state_version);
}
}
//routes
for(vector<State>::const_iterator i = route_states.begin(); i != route_states.end(); i++) {
@ -348,7 +322,7 @@ void MixerSnapshot::recall()
PlaylistDisposition disp = NewPlaylist;
_session->remove_route(route);
route = 0; //explicitly drop reference
route = 0; //explicitly drop referenc
RouteList rl = _session->new_route_from_template(1, order, node, name, disp);
boost::shared_ptr<Route> route = rl.front();
@ -363,12 +337,13 @@ void MixerSnapshot::recall()
string name;
group_node->get_property(X_("name"), name);
RouteGroup* rg = _session->route_group_by_name(name);
if(rg) {
printf("adding %s to %s\n", route->name().c_str(), rg->name().c_str());
if(!rg) {
//this might've been destroyed earlier
rg = _session->new_route_group(name);
}
rg->add(route);
}
}
}
// this is no longer possible due to using new_from_route_template
// _session->add_command(new MementoCommand<Route>((*route), &bfr, &route->get_state()));
@ -377,7 +352,31 @@ void MixerSnapshot::recall()
}
}
//groups
for(vector<State>::const_iterator i = group_states.begin(); i != group_states.end(); i++) {
if(!get_recall_groups()) {
break;
}
State state = (*i);
RouteGroup* group = _session->route_group_by_name(state.name);
if(!group) {
group = _session->new_route_group(state.name);
}
if(group) {
Stateful::ForceIDRegeneration fid;
uint32_t color;
state.node.get_property(X_("rgba"), color);
group->set_color(color);
group->set_state(state.node, Stateful::loading_state_version);
}
}
_session->commit_reversible_command();
}