Klaus Aehlig has uploaded a new change for review.
https://bazel-review.googlesource.com/3047
Change subject: experimental UI: merge simultaneous progress bar updates
......................................................................
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
---
M
src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
1 file changed, 14 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 a0d8b33..8d44489 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 @@
private final ExperimentalStateTracker stateTracker;
private int numLinesProgressBar;
private boolean buildComplete;
+ private boolean progressBarNeedsRefresh;
public final int terminalWidth;
@@ -55,6 +56,7 @@
this.stateTracker = new ExperimentalStateTracker();
this.numLinesProgressBar = 0;
this.buildComplete = false;
+ this.progressBarNeedsRefresh = false;
}
@Override
@@ -171,11 +173,19 @@
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);
}
--
To view, visit
https://bazel-review.googlesource.com/3047
To unsubscribe, visit
https://bazel-review.googlesource.com/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e6881f18b37626f6be3ad7b97043b42773812f3
Gerrit-PatchSet: 1
Gerrit-Project: bazel
Gerrit-Branch: master
Gerrit-Owner: Klaus Aehlig <
aeh...@google.com>