diff --git a/platform/usageView/src/com/intellij/usages/impl/Node.java b/platform/usageView/src/com/intellij/usages/impl/Node.java index 570c78ef6ebe..7ee5a1c5bfb5 100644 --- a/platform/usageView/src/com/intellij/usages/impl/Node.java +++ b/platform/usageView/src/com/intellij/usages/impl/Node.java @@ -92,13 +92,19 @@ public abstract class Node extends DefaultMutableTreeNode { return isFlagSet(EXCLUDED_MASK); } - final synchronized void update(@NotNull UsageView view, @NotNull Consumer edtNodeChangedQueue) { + final void update(@NotNull UsageView view, @NotNull Consumer edtNodeChangedQueue) { // performance: always update in background because smart pointer' isValid() can cause PSI chameleons expansion which is ridiculously expensive in cpp assert !ApplicationManager.getApplication().isDispatchThread(); boolean isDataValid = isDataValid(); boolean isReadOnly = isDataReadOnly(); String text = getText(view); + doUpdate(edtNodeChangedQueue, isDataValid, isReadOnly, text); + } + private synchronized void doUpdate(@NotNull Consumer edtNodeChangedQueue, + boolean isDataValid, + boolean isReadOnly, + String text) { boolean cachedValid = isValid(); boolean cachedReadOnly = isFlagSet(CACHED_READ_ONLY_MASK);