}
else
{
- const TrackType::Endpoint &entry_ep = track.endpoint();
unsigned path = track->get_active_path();
- if(!entry_ep.has_path(path))
+ if(!track.endpoint().has_path(path))
{
- const TrackType::Endpoint &exit_ep = track.reverse().endpoint();
- if(entry_ep.has_common_paths(exit_ep))
+ path = track->get_type().coerce_path(track.entry(), path);
+ track->set_active_path(path);
+ if(track->is_path_changing())
{
- unsigned mask = entry_ep.paths&exit_ep.paths;
- for(path=0; mask>1; ++path, mask>>=1) ;
-
- track->set_active_path(path);
- if(track->is_path_changing())
- {
- pending_block = &*block;
- break;
- }
- }
- else
- // XXX Do something here
+ pending_block = &*block;
break;
+ }
}
}