From a69afa66357b5c54fa437a6c28271c6159daaf77 Mon Sep 17 00:00:00 2001 From: Peter Kriens Date: Fri, 19 Aug 2022 12:32:31 +0200 Subject: [PATCH] [jvm crash in swt] It is still happening As a try, I've increased the coalesce time and then also tried to rearrange some of the overridden methods. Instead of calling the super last, moved it to first. Bit desperate ... it is pretty ok now, it happens to me once every month. But very frustrating that we cannot pin this down. If anybody has a full crash report, appreciated. Signed-off-by: Peter Kriens --- .../src/bndtools/explorer/BndtoolsExplorer.java | 9 +++++++-- bndtools.core/src/bndtools/explorer/Model.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bndtools.core/src/bndtools/explorer/BndtoolsExplorer.java b/bndtools.core/src/bndtools/explorer/BndtoolsExplorer.java index 418d26e7f8..eeb799fff2 100644 --- a/bndtools.core/src/bndtools/explorer/BndtoolsExplorer.java +++ b/bndtools.core/src/bndtools/explorer/BndtoolsExplorer.java @@ -242,6 +242,12 @@ public void dispose() { @Override public int tryToReveal(Object element) { + int result = super.tryToReveal(element); + afterReveal(element); + return result; + } + + private void afterReveal(Object element) { if (element instanceof IResource) { model.setActualSelection(element); model.setSelectedProject(getProject((IResource) element)); @@ -249,13 +255,12 @@ public int tryToReveal(Object element) { model.setActualSelection(null); model.setSelectedProject(null); } - return super.tryToReveal(element); } @Override public void selectAndReveal(Object element) { - tryToReveal(element); super.selectAndReveal(element); + afterReveal(element); } @Override diff --git a/bndtools.core/src/bndtools/explorer/Model.java b/bndtools.core/src/bndtools/explorer/Model.java index 929c2fe105..7174eb4439 100644 --- a/bndtools.core/src/bndtools/explorer/Model.java +++ b/bndtools.core/src/bndtools/explorer/Model.java @@ -116,7 +116,7 @@ private void update0() { try { // coalesce some more updates on // the worker thread(s). - Thread.sleep(10); + Thread.sleep(50); } catch (InterruptedException e) { Thread.currentThread() .interrupt();