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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
QXlibPointer<XVisualInfo> visual(glXGetVisualFromFBConfig(display, candidate));
|
int actualRed;
|
||||||
if (visual.isNull())
|
int actualGreen;
|
||||||
continue;
|
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)
|
if (requestedRed && actualRed < requestedRed)
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user