diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 900cd90372..f3e9f6e687 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -1533,27 +1533,14 @@ Session::auto_loop_changed (Location* location)
 
 		if (get_play_loop ()) {
 
-			if (_transport_sample < location->start() || _transport_sample > location->end()) {
-
-				/* new loop range excludes current transport
-				 * sample => relocate to beginning of loop and roll.
-				 */
-
-				/* Set this so that when/if we have to stop the
-				 * transport for a locate, we know that it is triggered
-				 * by loop-changing, and we do not cancel play loop
-				 */
-
-				loop_changing = true;
-				request_locate (location->start(), MustRoll);
-
-			} else {
+			/* Set this so that when/if we have to stop the
+			 * transport for a locate, we know that it is triggered
+			 * by loop-changing, and we do not cancel play loop
+			 */
+			loop_changing = true;
 
-				/* schedule a buffer overwrite to refill buffers with the new loop. */
-				SessionEvent *ev = new SessionEvent (SessionEvent::OverwriteAll, SessionEvent::Add, SessionEvent::Immediate, 0, 0, 0.0);
-				ev->overwrite = LoopChanged;
-				queue_event (ev);
-			}
+			/* Relocate to beginning of loop and roll. */
+			request_locate (location->start(), MustRoll);
 		}
 
 	} else {
