diff -cr 2.0-ongoing/gtk2_ardour/ardour_ui.cc MyArdour/gtk2_ardour/ardour_ui.cc
*** 2.0-ongoing/gtk2_ardour/ardour_ui.cc	2009-07-16 10:05:49.000000000 +1000
--- MyArdour/gtk2_ardour/ardour_ui.cc	2009-07-16 10:47:38.000000000 +1000
***************
*** 64,69 ****
--- 64,70 ----
  #include <ardour/recent_sessions.h>
  #include <ardour/port.h>
  #include <ardour/audio_track.h>
+ #include <ardour/control_protocol_manager.h>
  
  typedef uint64_t microseconds_t;
  
***************
*** 2536,2541 ****
--- 2537,2556 ----
  		goto out;
  	}
  
+ 	/* Now the session been created, add the transport controls */
+ 	new_session->add_controllable(&roll_controllable);
+ 	new_session->add_controllable(&stop_controllable);
+ 	new_session->add_controllable(&goto_start_controllable);
+ 	new_session->add_controllable(&goto_end_controllable);
+ 	new_session->add_controllable(&auto_loop_controllable);
+ 	new_session->add_controllable(&play_selection_controllable);
+ 	new_session->add_controllable(&rec_controllable);
+ 
+ 	/* Once the transport controlls have been added, the ControlProtocolManager
+ 	   is okay to instantiate the various protocols. */
+ 	BootMessage (_("Reset Control Protocols"));
+ 	ControlProtocolManager::instance().set_session (*new_session);
+ 
  	connect_to_session (new_session);
  
  	Config->set_current_owner (ConfigVariableBase::Interface);
diff -cr 2.0-ongoing/libs/ardour/session_state.cc MyArdour/libs/ardour/session_state.cc
*** 2.0-ongoing/libs/ardour/session_state.cc	2009-07-16 10:06:23.000000000 +1000
--- MyArdour/libs/ardour/session_state.cc	2009-07-16 10:47:46.000000000 +1000
***************
*** 337,346 ****
  
  	/* initial program change will be delivered later; see ::config_changed() */
  
- 	BootMessage (_("Reset Control Protocols"));
- 
- 	ControlProtocolManager::instance().set_session (*this);
- 
  	if (new_session) {
  		_end_location_is_free = true;
  	} else {
--- 337,342 ----
