--- old/src/java.desktop/share/classes/javax/swing/RepaintManager.java 2018-02-13 16:13:47.000000000 +0300 +++ new/src/java.desktop/share/classes/javax/swing/RepaintManager.java 2018-02-13 16:13:46.000000000 +0300 @@ -110,6 +110,8 @@ private Dimension doubleBufferMaxSize; + private boolean isCustomMaxBufferSizeSet = false; + // Support for both the standard and volatile offscreen buffers exists to // provide backwards compatibility for the [rare] programs which may be // calling getOffScreenBuffer() and not expecting to get a VolatileImage. @@ -335,7 +337,13 @@ } private void displayChanged() { - clearImages(); + if (isCustomMaxBufferSizeSet) { + clearImages(); + } else { + // Reset buffer maximum size to get valid size from updated graphics + // environment in getDoubleBufferMaximumSize() + setDoubleBufferMaximumSize(null); + } } /** @@ -1156,8 +1164,10 @@ public void setDoubleBufferMaximumSize(Dimension d) { doubleBufferMaxSize = d; if (doubleBufferMaxSize == null) { + isCustomMaxBufferSizeSet = false; clearImages(); } else { + isCustomMaxBufferSizeSet = true; clearImages(d.width, d.height); } }