summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java')
-rw-r--r--platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java22
1 files changed, 7 insertions, 15 deletions
diff --git a/platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java b/platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java
index 8aa0e38c0d0d..d7118949e5de 100644
--- a/platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java
+++ b/platform/platform-impl/src/com/intellij/ide/IdeRepaintManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,13 +24,12 @@ package com.intellij.ide;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.reference.SoftReference;
-import org.jetbrains.annotations.NonNls;
+import com.intellij.util.ReflectionUtil;
import javax.swing.*;
import java.awt.*;
import java.awt.image.VolatileImage;
import java.lang.ref.WeakReference;
-import java.lang.reflect.Field;
import java.util.Map;
/**
@@ -40,7 +39,6 @@ public class IdeRepaintManager extends RepaintManager {
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.HackyRepaintManager");
private Map<GraphicsConfiguration, VolatileImage> myImagesMap;
- @NonNls private static final String FAULTY_FIELD_NAME = "volatileMap";
WeakReference<JComponent> myLastComponent;
@@ -53,14 +51,7 @@ public class IdeRepaintManager extends RepaintManager {
// sync here is to avoid data race when two(!) AWT threads on startup try to compete for the single myImagesMap
private synchronized void clearLeakyImages(boolean force) {
if (myImagesMap == null) {
- try {
- Field volMapField = RepaintManager.class.getDeclaredField(FAULTY_FIELD_NAME);
- volMapField.setAccessible(true);
- myImagesMap = (Map<GraphicsConfiguration, VolatileImage>)volMapField.get(this);
- }
- catch (Exception e) {
- LOG.error(e);
- }
+ myImagesMap = ReflectionUtil.getField(RepaintManager.class, this, Map.class, "volatileMap");
}
if (force ||
@@ -90,12 +81,12 @@ public class IdeRepaintManager extends RepaintManager {
// We must keep a strong reference to the DisplayChangedListener,
// since SunDisplayChanger keeps only a WeakReference to it.
- private Object displayChangeHack;
+ private DisplayChangeHandler displayChangeHack;
{
try {
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice[] devices = env.getScreenDevices(); // init
+ env.getScreenDevices(); // init
Class<?> aClass = Class.forName("sun.awt.DisplayChangedListener"); // might be absent
displayChangeHack = new DisplayChangeHandler();
@@ -104,7 +95,8 @@ public class IdeRepaintManager extends RepaintManager {
.getMethod("addDisplayChangedListener", new Class[]{aClass})
.invoke(env, displayChangeHack);
}
- } catch (Throwable t) {
+ }
+ catch (Throwable t) {
if (!(t instanceof HeadlessException)) LOG.error("Cannot setup display change listener", t);
}
}