From 6a38b90ae3d62ab24a96e8d655785a83f0760663 Mon Sep 17 00:00:00 2001 From: David Perry Date: Tue, 30 Jun 2026 11:07:43 -0700 Subject: [PATCH] Fix early exit when stop-at-end is set but commits remain queued When rendering to video (-o), Gource enables stop_at_end and sets stop_position_reached as soon as the log EOF is read, before the simulation drains commitqueue. Auto-skip is then disabled and the app can exit mid-gap while later commits are still unprocessed. Keep auto-skip active while the queue is non-empty and defer exit until users are gone and the queue has been drained. --- src/gource.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gource.cpp b/src/gource.cpp index cf86c4f9..8fe3ac99 100644 --- a/src/gource.cpp +++ b/src/gource.cpp @@ -1398,7 +1398,7 @@ void Gource::updateUsers(float t, float dt) { } } - if(users.empty() && stop_position_reached) { + if(users.empty() && stop_position_reached && commitqueue.empty()) { appFinished = true; } @@ -1745,8 +1745,8 @@ void Gource::logic(float t, float dt) { RCommit commit = commitqueue.front(); - //auto skip ahead, unless stop_position_reached - if(gGourceSettings.auto_skip_seconds>=0.0 && idle_time >= gGourceSettings.auto_skip_seconds && !stop_position_reached) { + //auto skip ahead, unless stop_position_reached (still allow skip while commits remain queued) + if(gGourceSettings.auto_skip_seconds>=0.0 && idle_time >= gGourceSettings.auto_skip_seconds && (!stop_position_reached || !commitqueue.empty())) { currtime = lasttime = commit.timestamp; idle_time = 0.0; }