src/share/classes/javax/swing/plaf/nimbus/AbstractRegionPainter.java

Print this page

        

@@ -29,10 +29,15 @@
 import java.lang.reflect.Method;
 import javax.swing.*;
 import javax.swing.plaf.UIResource;
 import javax.swing.Painter;
 import java.awt.print.PrinterGraphics;
+import sun.awt.image.BufferedImageGraphicsConfig;
+import sun.awt.image.OffScreenImage;
+import sun.awt.image.SunVolatileImage;
+import sun.java2d.SunGraphics2D;
+import sun.swing.JLightweightFrame;
 
 /**
  * Convenient base class for defining Painter instances for rendering a
  * region or component in Nimbus.
  *

@@ -693,12 +698,17 @@
                     if (buffer != null) {
                         buffer.flush();
                         buffer = null;
                     }
                     //recreate the buffer
-                    buffer = config.createCompatibleVolatileImage(w, h,
-                            Transparency.TRANSLUCENT);
+                    if (config instanceof OffScreenImage.GraphicsConfig) {
+                        buffer = new OffScreenImage.
+                            VolatileImage((OffScreenImage.GraphicsConfig)config,
+                                           w, h, Transparency.TRANSLUCENT);
+                    } else {
+                        buffer = config.createCompatibleVolatileImage(w, h, Transparency.TRANSLUCENT);
+                    }                    
                     // put in cache for future
                     imageCache.setImage(buffer, config, w, h, this, extendedCacheKeys);
                 }
                 //create the graphics context with which to paint to the buffer
                 Graphics2D bg = buffer.createGraphics();