]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/track.cpp
Don't continue reserving until the turnout is done changing its path
[r2c2.git] / source / libr2c2 / track.cpp
index 51c73c237ccd27a8873ae26effc0a632434dc2c5..71c570cee86ccd251d6269c080b1c619bac18054 100644 (file)
@@ -123,6 +123,8 @@ void Track::set_turnout_id(unsigned i)
 {
        if(!type.is_turnout())
                throw logic_error("not a turnout");
+       if(!i)
+               throw invalid_argument("Track::set_turnout_id");
 
        turnout_id = i;
        layout.create_blocks(*this);
@@ -149,6 +151,7 @@ void Track::set_active_path(unsigned p)
        if(!(type.get_paths()&(1<<p)))
                throw invalid_argument("Track::set_active_path");
 
+       signal_path_changing(p);
        path_changing = true;
        layout.get_driver().set_turnout(turnout_id, p);
 }