# HG changeset patch # User avu # Date 1518744057 28800 # Node ID 96ea4dff640e3683ad05fd5f7fe2bf55f8e2ea7e # Parent cf931670015b82be3107341458fe4d858710e342 8197499: RepaintManager does not increase double buffer after attaching a device with higher resolution Reviewed-by: serb, prr diff -r cf931670015b -r 96ea4dff640e src/java.desktop/share/classes/javax/swing/RepaintManager.java --- a/src/java.desktop/share/classes/javax/swing/RepaintManager.java Thu Feb 15 14:20:44 2018 +0530 +++ b/src/java.desktop/share/classes/javax/swing/RepaintManager.java Thu Feb 15 17:20:57 2018 -0800 @@ -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); } }