From b64ce6f6bb48524cfba3212d145ee624bd8819f0 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 1 Nov 2018 15:06:18 +0100 Subject: [PATCH] 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 --- .../glxconvenience/qglxconvenience.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp index d7cc36627ac..99ae2671ddf 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience.cpp +++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp @@ -223,14 +223,15 @@ GLXFBConfig qglx_findConfig(Display *display, int screen , QSurfaceFormat format continue; } - QXlibPointer 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;