diff options
author | João Abecasis <joao.abecasis@nokia.com> | 2012-02-21 14:58:57 +0100 |
---|---|---|
committer | João Abecasis <joao.abecasis@nokia.com> | 2012-02-21 14:58:57 +0100 |
commit | 31a0358afb4fde998d1eeeaa80fc32e4420266c7 (patch) | |
tree | 938455353474196c1f49b0529b5b644e19c21f3e /src/platformsupport/glxconvenience | |
parent | 4c8a4058c359c8d163c643120426079fc80c8214 (diff) | |
parent | 69da8588d41bbf5ab785f5ad7c1fce76deefc7d0 (diff) |
Merge remote-tracking branch 'gerrit/master' into containers
Conflicts:
src/corelib/tools/qbytearray.h
Change-Id: I03b1f3e05c9b7a45130887c522fcd9b7aa387129
Diffstat (limited to 'src/platformsupport/glxconvenience')
-rw-r--r-- | src/platformsupport/glxconvenience/qglxconvenience.cpp | 17 | ||||
-rw-r--r-- | src/platformsupport/glxconvenience/qglxconvenience_p.h | 4 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp index 5acb2d0b65..f619bf53b8 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience.cpp +++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp @@ -153,23 +153,28 @@ GLXFBConfig qglx_findConfig(Display *display, int screen , const QSurfaceFormat XFree(configs); } - reducedFormat = qglx_reduceSurfaceFormat(reducedFormat,&reduced); + if (!chosenConfig) + reducedFormat = qglx_reduceSurfaceFormat(reducedFormat,&reduced); } return chosenConfig; } -XVisualInfo *qglx_findVisualInfo(Display *display, int screen, const QSurfaceFormat &format) +XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *format) { + Q_ASSERT(format); + XVisualInfo *visualInfo = 0; - GLXFBConfig config = qglx_findConfig(display,screen,format); - if (config) + GLXFBConfig config = qglx_findConfig(display,screen,*format); + if (config) { visualInfo = glXGetVisualFromFBConfig(display, config); + *format = qglx_surfaceFormatFromGLXFBConfig(display, config); + } // attempt to fall back to glXChooseVisual bool reduced = true; - QSurfaceFormat reducedFormat = format; + QSurfaceFormat reducedFormat = *format; while (!visualInfo && reduced) { QVarLengthArray<int, 13> attribs; attribs.append(GLX_RGBA); @@ -264,7 +269,7 @@ QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *redu } else if (retFormat.blueBufferSize() > 1) { retFormat.setBlueBufferSize(1); } else if (retFormat.samples() > 1) { - retFormat.setSamples(0); + retFormat.setSamples(qMin(retFormat.samples() / 2, 16)); } else if (retFormat.stereo()) { retFormat.setStereo(false); }else if (retFormat.stencilBufferSize() > 0) { diff --git a/src/platformsupport/glxconvenience/qglxconvenience_p.h b/src/platformsupport/glxconvenience/qglxconvenience_p.h index 6d4cecfbe6..a60f789a85 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience_p.h +++ b/src/platformsupport/glxconvenience/qglxconvenience_p.h @@ -48,9 +48,9 @@ #include <X11/Xlib.h> #include <GL/glx.h> -XVisualInfo *qglx_findVisualInfo(Display *display, int screen, const QSurfaceFormat &format); +XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *format); GLXFBConfig qglx_findConfig(Display *display, int screen, const QSurfaceFormat &format, int drawableBit = GLX_WINDOW_BIT); -QSurfaceFormat qglx_surfaceFormatFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext context); +QSurfaceFormat qglx_surfaceFormatFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext context = 0); QVector<int> qglx_buildSpec(const QSurfaceFormat &format, int drawableBit = GLX_WINDOW_BIT); QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *reduced); |