+ if (_requested_return_frame >= 0) {
+ _transport_frame = _requested_return_frame;
+ _requested_return_frame = -1;
+ do_locate = true;
+ } else {
+ if (play_loop && !synced_to_jack()) {
+ Location *location = _locations.auto_loop_location();
+
+ if (location != 0) {
+ _transport_frame = location->start();
+ do_locate = true;
+ } else {
+ _transport_frame = last_stop_frame;
+ }
+ } else {
+ _transport_frame = last_stop_frame;
+ }
+ _requested_return_frame = -1;
+ }
+
+ if (synced_to_jack() && !play_loop) {
+ do_locate = true;
+ }
+
+ if (do_locate) {
+ // cerr << "non-realtimestop: transport locate to " << _transport_frame << endl;