mem leak: renderer keeps file

This commit is contained in:
Konstantin Bulenkov
2012-02-17 13:40:06 +01:00
parent 03a6d597a6
commit 4d10ddc8cb
2 changed files with 9 additions and 1 deletions
@@ -29,6 +29,7 @@ import com.intellij.openapi.editor.ex.EditorMarkupModel;
import com.intellij.openapi.editor.ex.MarkupModelEx;
import com.intellij.openapi.editor.ex.RangeHighlighterEx;
import com.intellij.openapi.editor.impl.DocumentMarkupModel;
import com.intellij.openapi.editor.impl.EditorImpl;
import com.intellij.openapi.editor.impl.EditorMarkupModelImpl;
import com.intellij.openapi.editor.impl.event.MarkupModelListener;
import com.intellij.openapi.editor.markup.ErrorStripeRenderer;
@@ -123,7 +124,7 @@ public class TrafficLightRenderer implements ErrorStripeRenderer, Disposable {
}
else {
renderer = new TrafficLightRenderer(project, document, file);
Disposer.register(project, (Disposable)renderer);
Disposer.register(((EditorImpl)editorMarkupModel.getEditor()).getDisposable(), (Disposable)renderer);
editorMarkupModel.setErrorStripeRenderer(renderer);
}
}
@@ -25,6 +25,7 @@ import com.intellij.concurrency.JobScheduler;
import com.intellij.diagnostic.LogMessageEx;
import com.intellij.ide.*;
import com.intellij.ide.dnd.DnDManager;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.IdeActions;
@@ -283,6 +284,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
private boolean myPaintSelection;
private final EditorSizeAdjustmentStrategy mySizeAdjustmentStrategy = new EditorSizeAdjustmentStrategy();
private final Disposable myDisposable = Disposer.newDisposable();
static {
ourCaretBlinkingCommand = new RepaintCursorCommand();
@@ -683,6 +685,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
if (myConnection != null) {
myConnection.disconnect();
}
Disposer.dispose(myDisposable);
}
private void clearCaretThread() {
@@ -1539,6 +1542,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
myScrollToCaret = scrollToCaret;
}
public Disposable getDisposable() {
return myDisposable;
}
private static int countLineFeeds(CharSequence c) {
return StringUtil.countNewLines(c);
}