Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/gource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,9 @@ void Gource::reset() {

commitqueue_max_size = 100;

commit_interval_count = 0;
commit_interval_base = 0;

rotate_angle = 0.0f;

if(root!=0) delete root;
Expand Down Expand Up @@ -1145,6 +1148,14 @@ void Gource::readLog() {
continue;
}

if(gGourceSettings.commit_interval > 0.0f) {
if(commit_interval_count == 0) {
commit_interval_base = commit.timestamp;
}
commit.timestamp = commit_interval_base + (time_t)(commit_interval_count * gGourceSettings.commit_interval);
commit_interval_count++;
}

if(gGourceSettings.stop_timestamp != 0 && commit.timestamp > gGourceSettings.stop_timestamp) {
stop_position_reached = true;
break;
Expand Down
3 changes: 3 additions & 0 deletions src/gource.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,9 @@ class Gource : public SDLApp {
int commitqueue_max_size;
float starting_z;

int commit_interval_count;
time_t commit_interval_base;

std::deque<RCommit> commitqueue;
std::map<std::string, RUser*> users;
std::map<std::string, RFile*> files;
Expand Down
17 changes: 17 additions & 0 deletions src/gource_settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ void GourceSettings::help(bool extended_help) {
printf(" for a number of seconds (default: 3)\n");
printf(" --disable-auto-skip Disable auto skip\n");
printf(" -s, --seconds-per-day SECONDS Speed in seconds per day (default: 10)\n");
printf(" --commit-interval SECONDS Fixed number of seconds between commits\n");
printf(" --realtime Realtime playback speed\n");
printf(" --no-time-travel Use the time of the last commit if the\n");
printf(" time of a commit is in the past\n");
Expand Down Expand Up @@ -295,6 +296,7 @@ GourceSettings::GourceSettings() {
arg_types["bloom-multiplier"] = "float";
arg_types["elasticity"] = "float";
arg_types["seconds-per-day"] = "float";
arg_types["commit-interval"] = "float";
arg_types["auto-skip-seconds"] = "float";
arg_types["stop-at-time"] = "float";
arg_types["max-user-speed"] = "float";
Expand Down Expand Up @@ -408,6 +410,7 @@ void GourceSettings::setGourceDefaults() {

auto_skip_seconds = 3.0f;
days_per_second = 0.1f; // TODO: check this is right
commit_interval = -1.0f;
file_idle_time = 0.0f;
file_idle_time_at_end = 0.0f;
time_scale = 1.0f;
Expand Down Expand Up @@ -1208,6 +1211,20 @@ void GourceSettings::importGourceSettings(ConfFile& conffile, ConfSection* gourc
days_per_second = 1.0 / seconds_per_day;
}

if((entry = gource_settings->getEntry("commit-interval")) != 0) {

if(!entry->hasValue()) conffile.entryException(entry, "specify commit-interval (seconds)");

commit_interval = entry->getFloat();

if(commit_interval <= 0.0f) {
conffile.invalidValueException(entry);
}

// disable auto-skip in commit-interval mode
auto_skip_seconds = -1.0f;
}

if((entry = gource_settings->getEntry("auto-skip-seconds")) != 0) {

if(!entry->hasValue()) conffile.entryException(entry, "specify auto-skip-seconds (seconds)");
Expand Down
1 change: 1 addition & 0 deletions src/gource_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class GourceSettings : public SDLAppSettings {

float auto_skip_seconds;
float days_per_second;
float commit_interval;
float file_idle_time;
float file_idle_time_at_end;
float loop_delay_seconds;
Expand Down