提交 07f3d50a 编写于 作者: A anthony

6603312: Segmentation fault running java -jar SwingSet2.jar in 256 color mode

Summary: Force hiding the splashscreen if the code cannot allocate a reasonable number of color cells on PseudoColor displays
Reviewed-by: son, art
上级 af619506
......@@ -436,6 +436,7 @@ SplashInitPlatform(Splash * splash) {
break;
}
case PseudoColor: {
int availableColors;
int numColors;
int numComponents[3];
unsigned long colorIndex[SPLASH_COLOR_MAP_SIZE];
......@@ -444,9 +445,20 @@ SplashInitPlatform(Splash * splash) {
int depth = XDefaultDepthOfScreen(splash->screen);
int scale = 65535 / MAX_COLOR_VALUE;
numColors = GetNumAvailableColors(splash->display, splash->screen,
availableColors = GetNumAvailableColors(splash->display, splash->screen,
splash->visual->map_entries);
numColors = quantizeColors(numColors, numComponents);
numColors = quantizeColors(availableColors, numComponents);
if (numColors > availableColors) {
// Could not allocate the color cells. Most probably
// the pool got exhausted. Disable the splash screen.
XCloseDisplay(splash->display);
splash->isVisible = -1;
splash->display = NULL;
splash->screen = NULL;
splash->visual = NULL;
fprintf(stderr, "Warning: unable to initialize the splashscreen. Not enough available color cells.\n");
return;
}
splash->cmap = AllocColors(splash->display, splash->screen,
numColors, colorIndex);
for (i = 0; i < numColors; i++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册