Fix matching semi-transparent formats
For some reason some Visuals with semi-transparency incorrectly reports a depth of 24. Change-Id: If41ba1032fbe7d248f53f735cb84e61038b3300a Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
This commit is contained in:
parent
d761c62783
commit
b64ce6f6bb
@ -223,14 +223,15 @@ GLXFBConfig qglx_findConfig(Display *display, int screen , QSurfaceFormat format
|
||||
continue;
|
||||
}
|
||||
|
||||
QXlibPointer<XVisualInfo> visual(glXGetVisualFromFBConfig(display, candidate));
|
||||
if (visual.isNull())
|
||||
continue;
|
||||
int actualRed;
|
||||
int actualGreen;
|
||||
int actualBlue;
|
||||
int actualAlpha;
|
||||
glXGetFBConfigAttrib(display, candidate, GLX_RED_SIZE, &actualRed);
|
||||
glXGetFBConfigAttrib(display, candidate, GLX_GREEN_SIZE, &actualGreen);
|
||||
glXGetFBConfigAttrib(display, candidate, GLX_BLUE_SIZE, &actualBlue);
|
||||
glXGetFBConfigAttrib(display, candidate, GLX_ALPHA_SIZE, &actualAlpha);
|
||||
|
||||
const int actualRed = qPopulationCount(visual->red_mask);
|
||||
const int actualGreen = qPopulationCount(visual->green_mask);
|
||||
const int actualBlue = qPopulationCount(visual->blue_mask);
|
||||
const int actualAlpha = visual->depth - actualRed - actualGreen - actualBlue;
|
||||
|
||||
if (requestedRed && actualRed < requestedRed)
|
||||
continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user