diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 124d48a..a4787c8 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -1070,7 +1070,7 @@ class Session : public PBD::StatefulDestructible
 		set_worst_io_latencies ();
 	}
 
-	void update_latency_compensation_proxy (void* ignored);
+	void route_redirects_changed (void* ignored);
 
 	void ensure_passthru_buffers (uint32_t howmany);
 	
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index f279153..cb06256 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -2186,7 +2186,7 @@ Session::add_routes (RouteList& new_routes, bool save)
 		(*x)->solo_changed.connect (sigc::bind (mem_fun (*this, &Session::route_solo_changed), wpr));
 		(*x)->mute_changed.connect (mem_fun (*this, &Session::route_mute_changed));
 		(*x)->output_changed.connect (mem_fun (*this, &Session::set_worst_io_latencies_x));
-		(*x)->redirects_changed.connect (mem_fun (*this, &Session::update_latency_compensation_proxy));
+		(*x)->redirects_changed.connect (mem_fun (*this, &Session::route_redirects_changed));
 		
 		if ((*x)->master()) {
 			_master_out = (*x);
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index d7b0e04..efcb0bd 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -1385,9 +1385,10 @@ Session::update_latency_compensation (bool with_stop, bool abort)
 }
 
 void
-Session::update_latency_compensation_proxy (void* ignored)
+Session::route_redirects_changed (void* ignored)
 {
 	update_latency_compensation (false, false);
+	resort_routes ();
 }
 
 void
