Merge branch 'jc/simplify-progress'

The API to start showing progress meter after a short delay has
been simplified.

* jc/simplify-progress:
  progress: simplify "delayed" progress API
This commit is contained in:
Junio C Hamano
2017-08-24 10:20:02 -07:00
10 changed files with 20 additions and 19 deletions

View File

@ -925,8 +925,7 @@ parse_done:
sb.found_guilty_entry = &found_guilty_entry; sb.found_guilty_entry = &found_guilty_entry;
sb.found_guilty_entry_data = π sb.found_guilty_entry_data = π
if (show_progress) if (show_progress)
pi.progress = start_progress_delay(_("Blaming lines"), pi.progress = start_delayed_progress(_("Blaming lines"), sb.num_lines);
sb.num_lines, 50, 1);
assign_blame(&sb, opt); assign_blame(&sb, opt);

View File

@ -179,7 +179,7 @@ static int traverse_reachable(void)
unsigned int nr = 0; unsigned int nr = 0;
int result = 0; int result = 0;
if (show_progress) if (show_progress)
progress = start_progress_delay(_("Checking connectivity"), 0, 0, 2); progress = start_delayed_progress(_("Checking connectivity"), 0);
while (pending.nr) { while (pending.nr) {
struct object_array_entry *entry; struct object_array_entry *entry;
struct object *obj; struct object *obj;

View File

@ -1759,7 +1759,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
rev.add_signoff = do_signoff; rev.add_signoff = do_signoff;
if (show_progress) if (show_progress)
progress = start_progress_delay(_("Generating patches"), total, 0, 2); progress = start_delayed_progress(_("Generating patches"), total);
while (0 <= --nr) { while (0 <= --nr) {
int shown; int shown;
display_progress(progress, total - nr); display_progress(progress, total - nr);

View File

@ -37,8 +37,7 @@ static int prune_object(const struct object_id *oid, const char *path,
void prune_packed_objects(int opts) void prune_packed_objects(int opts)
{ {
if (opts & PRUNE_PACKED_VERBOSE) if (opts & PRUNE_PACKED_VERBOSE)
progress = start_progress_delay(_("Removing duplicate objects"), progress = start_delayed_progress(_("Removing duplicate objects"), 256);
256, 95, 2);
for_each_loose_file_in_objdir(get_object_directory(), for_each_loose_file_in_objdir(get_object_directory(),
prune_object, NULL, prune_subdir, &opts); prune_object, NULL, prune_subdir, &opts);

View File

@ -138,7 +138,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
if (show_progress == -1) if (show_progress == -1)
show_progress = isatty(2); show_progress = isatty(2);
if (show_progress) if (show_progress)
progress = start_progress_delay(_("Checking connectivity"), 0, 0, 2); progress = start_delayed_progress(_("Checking connectivity"), 0);
mark_reachable_objects(&revs, 1, expire, progress); mark_reachable_objects(&revs, 1, expire, progress);
stop_progress(&progress); stop_progress(&progress);

View File

@ -367,7 +367,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
revs.limited = 1; revs.limited = 1;
if (show_progress) if (show_progress)
progress = start_progress_delay(show_progress, 0, 0, 2); progress = start_delayed_progress(show_progress, 0);
if (use_bitmap_index && !revs.prune) { if (use_bitmap_index && !revs.prune) {
if (revs.count && !revs.left_right && !revs.cherry_mark) { if (revs.count && !revs.left_right && !revs.cherry_mark) {

View File

@ -532,9 +532,9 @@ void diffcore_rename(struct diff_options *options)
} }
if (options->show_rename_progress) { if (options->show_rename_progress) {
progress = start_progress_delay( progress = start_delayed_progress(
_("Performing inexact rename detection"), _("Performing inexact rename detection"),
rename_dst_nr * rename_src_nr, 50, 1); rename_dst_nr * rename_src_nr);
} }
mx = xcalloc(st_mult(NUM_CANDIDATE_PER_DST, num_create), sizeof(*mx)); mx = xcalloc(st_mult(NUM_CANDIDATE_PER_DST, num_create), sizeof(*mx));

View File

@ -34,7 +34,7 @@ struct progress {
unsigned total; unsigned total;
unsigned last_percent; unsigned last_percent;
unsigned delay; unsigned delay;
unsigned delayed_percent_treshold; unsigned delayed_percent_threshold;
struct throughput *throughput; struct throughput *throughput;
uint64_t start_ns; uint64_t start_ns;
}; };
@ -88,7 +88,7 @@ static int display(struct progress *progress, unsigned n, const char *done)
return 0; return 0;
if (progress->total) { if (progress->total) {
unsigned percent = n * 100 / progress->total; unsigned percent = n * 100 / progress->total;
if (percent > progress->delayed_percent_treshold) { if (percent > progress->delayed_percent_threshold) {
/* inhibit this progress report entirely */ /* inhibit this progress report entirely */
clear_progress_signal(); clear_progress_signal();
progress->delay = -1; progress->delay = -1;
@ -205,8 +205,8 @@ int display_progress(struct progress *progress, unsigned n)
return progress ? display(progress, n, NULL) : 0; return progress ? display(progress, n, NULL) : 0;
} }
struct progress *start_progress_delay(const char *title, unsigned total, static struct progress *start_progress_delay(const char *title, unsigned total,
unsigned percent_treshold, unsigned delay) unsigned percent_threshold, unsigned delay)
{ {
struct progress *progress = malloc(sizeof(*progress)); struct progress *progress = malloc(sizeof(*progress));
if (!progress) { if (!progress) {
@ -219,7 +219,7 @@ struct progress *start_progress_delay(const char *title, unsigned total,
progress->total = total; progress->total = total;
progress->last_value = -1; progress->last_value = -1;
progress->last_percent = -1; progress->last_percent = -1;
progress->delayed_percent_treshold = percent_treshold; progress->delayed_percent_threshold = percent_threshold;
progress->delay = delay; progress->delay = delay;
progress->throughput = NULL; progress->throughput = NULL;
progress->start_ns = getnanotime(); progress->start_ns = getnanotime();
@ -227,6 +227,11 @@ struct progress *start_progress_delay(const char *title, unsigned total,
return progress; return progress;
} }
struct progress *start_delayed_progress(const char *title, unsigned total)
{
return start_progress_delay(title, total, 0, 2);
}
struct progress *start_progress(const char *title, unsigned total) struct progress *start_progress(const char *title, unsigned total)
{ {
return start_progress_delay(title, total, 0, 0); return start_progress_delay(title, total, 0, 0);

View File

@ -6,8 +6,7 @@ struct progress;
void display_throughput(struct progress *progress, off_t total); void display_throughput(struct progress *progress, off_t total);
int display_progress(struct progress *progress, unsigned n); int display_progress(struct progress *progress, unsigned n);
struct progress *start_progress(const char *title, unsigned total); struct progress *start_progress(const char *title, unsigned total);
struct progress *start_progress_delay(const char *title, unsigned total, struct progress *start_delayed_progress(const char *title, unsigned total);
unsigned percent_treshold, unsigned delay);
void stop_progress(struct progress **progress); void stop_progress(struct progress **progress);
void stop_progress_msg(struct progress **progress, const char *msg); void stop_progress_msg(struct progress **progress, const char *msg);

View File

@ -343,8 +343,7 @@ static struct progress *get_progress(struct unpack_trees_options *o)
total++; total++;
} }
return start_progress_delay(_("Checking out files"), return start_delayed_progress(_("Checking out files"), total);
total, 50, 1);
} }
static int check_updates(struct unpack_trees_options *o) static int check_updates(struct unpack_trees_options *o)