< prev index next >
src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c
Print this page
*** 203,234 ****
int visualsMatched, i;
visualList = XGetVisualInfo(awt_display,
mask, vinfo, &visualsMatched);
if (visualList) {
defaultConfig = ZALLOC(_AwtGraphicsConfigData);
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,
SystemColor, which in turn will cause toolkit to be reinitialized */
if (awtCreateX11Colormap(defaultConfig)) {
/* Allocate white and black pixels for this visual */
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;
}
- }
XFree(visualList);
free((void *)defaultConfig);
}
return NULL;
}
--- 203,247 ----
int visualsMatched, i;
visualList = XGetVisualInfo(awt_display,
mask, vinfo, &visualsMatched);
if (visualList) {
+ int id = -1;
+ VisualID defaultVisual = XVisualIDFromVisual(DefaultVisual(awt_display, vinfo->screen));
defaultConfig = ZALLOC(_AwtGraphicsConfigData);
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,
SystemColor, which in turn will cause toolkit to be reinitialized */
if (awtCreateX11Colormap(defaultConfig)) {
+ if (visualList[i].visualid == defaultVisual) {
+ id = i;
+ break;
+ } else if (-1 == id) {
+ // Keep 1st match for fallback
+ id = i;
+ }
+ }
+ }
+ if (-1 != id) {
+ memcpy(&defaultConfig->awt_visInfo, &visualList[id], sizeof(XVisualInfo));
+ defaultConfig->awt_depth = visualList[id].depth;
/* Allocate white and black pixels for this visual */
color.flags = DoRed | DoGreen | DoBlue;
color.red = color.green = color.blue = 0x0000;
XAllocColor(awt_display, defaultConfig->awt_cmap, &color);
! x11Screens[visualList[id].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[id].screen].whitepixel = color.pixel;
XFree(visualList);
return defaultConfig;
}
XFree(visualList);
free((void *)defaultConfig);
}
return NULL;
}
< prev index next >