< prev index next >

src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c

Print this page

        

@@ -203,11 +203,32 @@
     int visualsMatched, i;
 
     visualList = XGetVisualInfo(awt_display,
                                 mask, vinfo, &visualsMatched);
     if (visualList) {
+        VisualID defaultVisual;
         defaultConfig = ZALLOC(_AwtGraphicsConfigData);
+        defaultVisual = XVisualIDFromVisual(DefaultVisual(awt_display, vinfo->screen));
+        for (i = 0; i < visualsMatched; i++) {
+            if (visualList[i].visualid == defaultVisual) {
+                memcpy(&defaultConfig->awt_visInfo, &visualList[i], sizeof(XVisualInfo));
+                defaultConfig->awt_depth = visualList[i].depth;
+                if (awtCreateX11Colormap(defaultConfig)) {
+                    color.flags = DoRed | DoGreen | DoBlue;
+                    color.red = color.green = color.blue = 0x0000;
+                    XAllocColor(awt_display, defaultConfig->awt_cmap, &color);
+                    x11Screens[visualList[i].screen].blackpixel = color.pixel;
+                    color.flags = DoRed | DoGreen | DoBlue;
+                    color.red = color.green = color.blue = 0xffff;
+                    XAllocColor(awt_display, defaultConfig->awt_cmap, &color);
+                    x11Screens[visualList[i].screen].whitepixel = color.pixel;
+                    XFree(visualList);
+                    return defaultConfig;
+                }
+                break;
+            }
+        }
         for (i = 0; i < visualsMatched; i++) {
             memcpy(&defaultConfig->awt_visInfo, &visualList[i], sizeof(XVisualInfo));
             defaultConfig->awt_depth = visualList[i].depth;
 
             /* we can't use awtJNI_CreateColorData here, because it'll pull,
< prev index next >