From 5d4e68d51eecfbe37e17f59cc7f7f042c69a65e9 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 20 May 2016 14:16:09 +0100 Subject: move glX stuff to X-only modules Change-Id: I8ca818dac72f0368b6af10c838603e63c7c85b1e --- vcl/unx/generic/app/saldisp.cxx | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'vcl/unx') diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx index dd5ce040d610..ec5325066e04 100644 --- a/vcl/unx/generic/app/saldisp.cxx +++ b/vcl/unx/generic/app/saldisp.cxx @@ -47,6 +47,9 @@ #include #endif +#include "GL/glxew.h" +#include + #include #include @@ -183,6 +186,30 @@ sal_GetServerVendor( Display *p_display ) return vendor_unknown; } +bool SalDisplay::BestOpenGLVisual(Display* pDisplay, int nScreen, XVisualInfo& rVI) +{ + OpenGLZone aZone; + + XVisualInfo* pVI; + int aAttrib[] = { GLX_RGBA, + GLX_RED_SIZE, 8, + GLX_GREEN_SIZE, 8, + GLX_BLUE_SIZE, 8, + GLX_DEPTH_SIZE, 24, + GLX_STENCIL_SIZE, 8, + None }; + + pVI = glXChooseVisual( pDisplay, nScreen, aAttrib ); + if( !pVI ) + return false; + + rVI = *pVI; + XFree( pVI ); + + CHECK_GL_ERROR(); + return true; +} + bool SalDisplay::BestVisual( Display *pDisplay, int nScreen, XVisualInfo &rVI ) @@ -198,7 +225,7 @@ bool SalDisplay::BestVisual( Display *pDisplay, try { bool bUseOpenGL = OpenGLHelper::isVCLOpenGLEnabled(); - if( bUseOpenGL && OpenGLHelper::GetVisualInfo( pDisplay, nScreen, rVI ) ) + if (bUseOpenGL && BestOpenGLVisual(pDisplay, nScreen, rVI)) return rVI.visualid == nDefVID; } catch (const css::uno::DeploymentException&) -- cgit