33 lines
1.6 KiB
Diff
33 lines
1.6 KiB
Diff
--- a/src/java.desktop/unix/classes/sun/awt/X11/XWindow.java
|
|
+++ b/src/java.desktop/unix/classes/sun/awt/X11/XWindow.java
|
|
@@ -53,6 +53,7 @@ import java.lang.ref.WeakReference;
|
|
|
|
import sun.awt.AWTAccessor;
|
|
import sun.awt.AWTAccessor.ComponentAccessor;
|
|
+import sun.awt.image.PixelConverter;
|
|
import sun.awt.PaintEventDispatcher;
|
|
import sun.awt.PeerEvent;
|
|
import sun.awt.SunToolkit;
|
|
@@ -465,7 +466,20 @@ class XWindow extends XBaseWindow implements X11ComponentPeer {
|
|
if (!doEraseBackground()) {
|
|
return;
|
|
}
|
|
- int pixel = surfaceData.pixelFor(c.getRGB());
|
|
+ int pixel = 0;
|
|
+ boolean isOglEnabled = Boolean.getBoolean("sun.java2d.opengl");
|
|
+ if (isOglEnabled) {
|
|
+ // 6304250: XAWT: Items in choice show a blue border on OpenGL + Solaris10 when background color is set
|
|
+ // Note: When OGL is enabled, surfaceData.pixelFor() will not
|
|
+ // return a pixel value appropriate for passing to
|
|
+ // XSetWindowBackground(). Therefore, we will use the ColorModel
|
|
+ // for this component in order to calculate a pixel value from
|
|
+ // the given RGB value.
|
|
+ ColorModel cm = getColorModel();
|
|
+ pixel = PixelConverter.instance.rgbToPixel(c.getRGB(), cm);
|
|
+ } else {
|
|
+ pixel = surfaceData.pixelFor(c.getRGB());
|
|
+ }
|
|
XlibWrapper.XSetWindowBackground(XToolkit.getDisplay(), getContentWindow(), pixel);
|
|
XlibWrapper.XClearWindow(XToolkit.getDisplay(), getContentWindow());
|
|
}
|