From aa435c26471da23a95debaa1c2a3d213cbce5636 Mon Sep 17 00:00:00 2001 From: Oleg Sukhodolsky Date: Fri, 6 Feb 2015 07:54:12 +0300 Subject: [PATCH] RUBY-15932: let's limit number of line extensions we paint in case we have too many extensions IDE is almost hanging on painting --- .../xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java index 922760e5f413..01821a3be230 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEditorLinePainter.java @@ -50,6 +50,10 @@ import java.util.List; */ public class XDebuggerEditorLinePainter extends EditorLinePainter { public static final Key> CACHE = Key.create("debug.inline.variables.cache"); + // we want to limit number of line extentions to avoid very slow painting + // the constant is rather random (feel free to adjust it upon getting a new information) + private static final int LINE_EXTENTIONS_MAX_COUNT = 200; + @Override public Collection getLineExtensions(@NotNull Project project, @NotNull VirtualFile file, int lineNumber) { if (!Registry.is("ide.debugger.inline")) { @@ -142,7 +146,7 @@ public class XDebuggerEditorLinePainter extends EditorLinePainter { for (VariableText text : result) { infos.addAll(text.infos); } - return infos; + return infos.size() > LINE_EXTENTIONS_MAX_COUNT ? infos.subList(0, LINE_EXTENTIONS_MAX_COUNT) : infos; } return null; }