--- old/src/windows/classes/sun/awt/windows/ThemeReader.java 2014-05-05 17:29:16.689809000 +0400 +++ new/src/windows/classes/sun/awt/windows/ThemeReader.java 2014-05-05 17:29:16.094233300 +0400 @@ -31,6 +31,7 @@ import java.awt.Point; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -61,6 +62,8 @@ private static final Lock readLock = readWriteLock.readLock(); private static final Lock writeLock = readWriteLock.writeLock(); + private static final AtomicBoolean themeEnabled = WToolkit.getWToolkit().getXPStyleEnabled(); + static void flush() { writeLock.lock(); try { @@ -119,9 +122,14 @@ public static void paintBackground(int[] buffer, String widget, int part, int state, int x, int y, int w, int h, int stride) { + if (!themeEnabled.get()) { + return; + } readLock.lock(); try { paintBackground(buffer, getTheme(widget), part, state, x, y, w, h, stride); + } catch (InternalError ie) { + // JDK-8039383: It should not happen, yet it's better to suppress this exception anyway } finally { readLock.unlock(); } @@ -142,6 +150,9 @@ private static native boolean isThemePartDefined(long theme, int part, int state); public static boolean isThemePartDefined(String widget, int part, int state) { + if (!themeEnabled.get()) { + return false; + } readLock.lock(); try { return isThemePartDefined(getTheme(widget), part, state);