diff options
author | Klaus Aehlig <aehlig@google.com> | 2016-03-04 13:11:59 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-03-04 16:16:50 +0000 |
commit | 738f7f674271e0c366976a8f8a635784760d4e2b (patch) | |
tree | 1626ed5ac2e3dce3ac2ba16073213f364ec5ff8b /src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | |
parent | d2bf690b5d69e25945e85e067a9a2a8c2b351d50 (diff) |
experimental UI: merge simultaneous progress bar updates
Events may reach the UI over the event bus simultaneously or
with very small time difference. Updating the UI on the terminal,
however is an expensive operation. So update the UI only once
for simultaneous events.
--
Change-Id: I3e6881f18b37626f6be3ad7b97043b42773812f3
Reviewed-on: https://bazel-review.googlesource.com/#/c/3047
MOS_MIGRATED_REVID=116352143
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java index 5b38f0f1f0..6c5dd0e954 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java @@ -44,6 +44,7 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { private final ExperimentalStateTracker stateTracker; private int numLinesProgressBar; private boolean buildComplete; + private boolean progressBarNeedsRefresh; public final int terminalWidth; @@ -170,11 +171,19 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { refresh(); } - private synchronized void refresh() { + private void refresh() { + progressBarNeedsRefresh = true; + doRefresh(); + } + + private synchronized void doRefresh() { try { - clearProgressBar(); - addProgressBar(); - terminal.flush(); + if (progressBarNeedsRefresh) { + progressBarNeedsRefresh = false; + clearProgressBar(); + addProgressBar(); + terminal.flush(); + } } catch (IOException e) { LOG.warning("IO Error writing to output stream: " + e); } |