Index: libs/ardour/ardour/audioengine.h
===================================================================
--- libs/ardour/ardour/audioengine.h	(revision 2138)
+++ libs/ardour/ardour/audioengine.h	(working copy)
@@ -84,10 +84,7 @@
 		return jack_frame_time (_jack);
 	}
 
-	nframes_t transport_frame () const {
-		if (!_running || !_jack) return 0;
-		return jack_get_current_transport_frame (_jack);
-	}
+	nframes_t transport_frame () const;
 	
 	int request_buffer_size (nframes_t);
 	
Index: libs/ardour/audioengine.cc
===================================================================
--- libs/ardour/audioengine.cc	(revision 2138)
+++ libs/ardour/audioengine.cc	(working copy)
@@ -694,6 +694,17 @@
 	}
 }
 
+
+nframes_t
+AudioEngine::transport_frame () const
+{
+    if (!_running || !_jack) return 0;
+    return jack_get_current_transport_frame (_jack);
+    //jack_position_t pos;
+    //jack_transport_query( _jack, &pos );
+    //return pos.frame;
+}
+
 Port *
 AudioEngine::get_port_by_name (const string& portname, bool keep)
 {
Index: libs/ardour/session_time.cc
===================================================================
--- libs/ardour/session_time.cc	(revision 2138)
+++ libs/ardour/session_time.cc	(working copy)
@@ -497,15 +497,15 @@
 
 	/* frame info */
 
-	pos->frame = _transport_frame;
+	//pos->frame = _transport_frame;
 	pos->valid = JackPositionTimecode;
 
 	/* BBT info */
 	
 	if (_tempo_map) {
 
-		TempoMap::Metric metric (_tempo_map->metric_at (_transport_frame));
-		_tempo_map->bbt_time_with_metric (_transport_frame, bbt, metric);
+		TempoMap::Metric metric (_tempo_map->metric_at (pos->frame));
+		_tempo_map->bbt_time_with_metric (pos->frame, bbt, metric);
 		
 		pos->bar = bbt.bars;
 		pos->beat = bbt.beats;
Index: libs/ardour/session_process.cc
===================================================================
--- libs/ardour/session_process.cc	(revision 2138)
+++ libs/ardour/session_process.cc	(working copy)
@@ -46,9 +46,7 @@
 Session::process (nframes_t nframes)
 {
 	if (synced_to_jack() && waiting_to_start) {
-		if ( _engine.transport_state() == AudioEngine::TransportRolling) {
 			actually_start_transport ();
-		}
 	}
 
 	if (non_realtime_work_pending()) {
Index: libs/ardour/session_transport.cc
===================================================================
--- libs/ardour/session_transport.cc	(revision 2138)
+++ libs/ardour/session_transport.cc	(working copy)
@@ -879,6 +879,9 @@
 void
 Session::start_transport ()
 {
+	if (synced_to_jack() && !_exporting) {
+	    _transport_frame += get_block_size();
+	}
 	_last_roll_location = _transport_frame;
 
 	/* if record status is Enabled, move it to Recording. if its
