From: Steffen Daode Nurpmeso <sdaoden@xxxxxxxxx> Sometimes the task which is tracked via progress is splitted into two parts, e.g. check_updates() in unpack_trees.c updates the working tree by first removing files, followed by checking out files. Whereas it is possible to simply recreate a progress reporter, it's easier to simply call in to update the state of the yet existing one. Inspired-by: Junio C Hamano <gitster@xxxxxxxxx> Signed-off-by: Steffen Daode Nurpmeso <sdaoden@xxxxxxxxx> --- progress.c | 15 +++++++++++++++ progress.h | 2 ++ 2 files changed, 17 insertions(+), 0 deletions(-) diff --git a/progress.c b/progress.c index 3971f49..c86f83f 100644 --- a/progress.c +++ b/progress.c @@ -234,6 +234,21 @@ struct progress *start_progress(const char *title, unsigned total) return start_progress_delay(title, total, 0, 0); } +void update_progress(struct progress *progress, const char *title, + unsigned total) +{ + if (!progress) + return; + progress->title = title; + progress->total = total; + progress->last_value = -1; + progress->last_percent = -1; + if (progress->delay < 0) + progress->delay = 0; + clear_progress_signal(); + set_progress_signal(); +} + void stop_progress(struct progress **p_progress) { stop_progress_msg(p_progress, "done"); diff --git a/progress.h b/progress.h index 611e4c4..eed5b58 100644 --- a/progress.h +++ b/progress.h @@ -8,6 +8,8 @@ int display_progress(struct progress *progress, unsigned n); struct progress *start_progress(const char *title, unsigned total); struct progress *start_progress_delay(const char *title, unsigned total, unsigned percent_treshold, unsigned delay); +void update_progress(struct progress *progress, const char *title, + unsigned total); void stop_progress(struct progress **progress); void stop_progress_msg(struct progress **progress, const char *msg); -- 1.7.7.rc0.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html