8212677: X11 default visual support for IM status window on VNC

Reviewed-by: serb, naoto
This commit is contained in:
Ichiroh Takiguchi 2019-02-01 15:34:53 -08:00
parent 293f77f18f
commit 86cf7f8768
2 changed files with 28 additions and 14 deletions
src/java.desktop/unix/native/libawt_xawt/awt

@ -190,6 +190,8 @@ findWithTemplate(XVisualInfo *vinfo,
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));
@ -198,20 +200,31 @@ findWithTemplate(XVisualInfo *vinfo,
/* 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;
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);
}

@ -676,9 +676,10 @@ static StatusWindow *createStatusWindow(Window parent) {
return NULL;
}
statusWindow->w = status;
//12-point font
//12, 13-point fonts
statusWindow->fontset = XCreateFontSet(dpy,
"-*-*-medium-r-normal-*-*-120-*-*-*-*",
"-*-*-medium-r-normal-*-*-120-*-*-*-*," \
"-*-*-medium-r-normal-*-*-130-*-*-*-*",
&mclr, &mccr, &dsr);
/* In case we didn't find the font set, release the list of missing characters */
if (mccr > 0) {