Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Wolf2018-08-25 18:11:07 +0000
committerThomas Wolf2018-08-25 18:11:07 +0000
commit9abe013b530e3b9bb931931626ea144958473ee3 (patch)
tree837b6a32bdc0b2ee0d5c18e96ae6df12d0f390b6
parentea7b7b5b26270cc4bef44bf2b1b9970b2082322b (diff)
downloadegit-9abe013b530e3b9bb931931626ea144958473ee3.tar.gz
egit-9abe013b530e3b9bb931931626ea144958473ee3.tar.xz
egit-9abe013b530e3b9bb931931626ea144958473ee3.zip
Avoid more UI freezes in ReflogView: redraw once only
Adding lots of children (for instance, some 1500 ReflogItems) to the viewer is slow because the viewer tries to redraw too often. UI monitoring still reported UI freezes of about 3sec (at least on Cocoa). Avoid this by suppressing redraws while the viewer is adding the items. Redraw it once all items have been added. Change-Id: Ic38ae975a5edee5cc75d3c296d438e352844daa6 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogViewContentProvider.java12
1 files changed, 9 insertions, 3 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogViewContentProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogViewContentProvider.java
index d0c55bba75..1f0d28f8bb 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogViewContentProvider.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogViewContentProvider.java
@@ -274,10 +274,16 @@ public class ReflogViewContentProvider implements ITreeContentProvider {
}
control.getDisplay().syncExec(() -> {
if (!control.isDisposed()) {
- if (children.length != 1 || children[0] != ERROR_ELEMENT) {
- viewer.remove(ERROR_ELEMENT);
+ try {
+ control.setRedraw(false);
+ if (children.length != 1
+ || children[0] != ERROR_ELEMENT) {
+ viewer.remove(ERROR_ELEMENT);
+ }
+ viewer.add(parent, children);
+ } finally {
+ control.setRedraw(true);
}
- viewer.add(parent, children);
}
});
}

Back to the top