static int fghGetConfig( int attribute )
{
int returnValue = 0;
+ int result; /* Not checked */
if( fgStructure.CurrentWindow )
- glXGetConfig( fgDisplay.Display, fgStructure.CurrentWindow->Window.VisualInfo,
- attribute, &returnValue );
+ result = glXGetFBConfigAttrib( fgDisplay.Display,
+ *(fgStructure.CurrentWindow->Window.FBConfig),
+ attribute,
+ &returnValue );
return returnValue;
}
case GLUT_SCREEN_HEIGHT: return fgDisplay.ScreenHeight ;
case GLUT_SCREEN_WIDTH_MM: return fgDisplay.ScreenWidthMM ;
case GLUT_SCREEN_HEIGHT_MM: return fgDisplay.ScreenHeightMM;
- case GLUT_INIT_WINDOW_X: return fgState.Position.X ;
- case GLUT_INIT_WINDOW_Y: return fgState.Position.Y ;
- case GLUT_INIT_WINDOW_WIDTH: return fgState.Size.X ;
- case GLUT_INIT_WINDOW_HEIGHT: return fgState.Size.Y ;
+ case GLUT_INIT_WINDOW_X: return fgState.Position.Use ?
+ fgState.Position.X : -1 ;
+ case GLUT_INIT_WINDOW_Y: return fgState.Position.Use ?
+ fgState.Position.Y : -1 ;
+ case GLUT_INIT_WINDOW_WIDTH: return fgState.Size.Use ?
+ fgState.Size.X : -1 ;
+ case GLUT_INIT_WINDOW_HEIGHT: return fgState.Size.Use ?
+ fgState.Size.Y : -1 ;
case GLUT_INIT_DISPLAY_MODE: return fgState.DisplayMode ;
#if TARGET_HOST_POSIX_X11
*/
return 0;
}
- return fgStructure.CurrentWindow->Window.VisualInfo->visual->map_entries;
+ else
+ {
+ const GLXFBConfig * fbconfig =
+ fgStructure.CurrentWindow->Window.FBConfig;
+
+ XVisualInfo * visualInfo =
+ glXGetVisualFromFBConfig( fgDisplay.Display, *fbconfig );
+
+ const int result = visualInfo->visual->map_entries;
+
+ XFree(visualInfo);
+
+ return result;
+ }
/*
* Those calls are somewhat similiar, as they use XGetWindowAttributes()
/* I do not know yet if there will be a fgChooseVisual() function for Win32 */
case GLUT_DISPLAY_MODE_POSSIBLE:
{
- XVisualInfo* visualInfo = fgChooseVisual();
- if ( visualInfo == NULL ) {
- return 0;
- } else {
- XFree( visualInfo );
- return 1;
+ /* We should not have to call fgChooseFBConfig again here. */
+ GLXFBConfig * fbconfig;
+ int isPossible;
+
+ fbconfig = fgChooseFBConfig();
+
+ if (fbconfig == NULL)
+ {
+ isPossible = 0;
}
+ else
+ {
+ isPossible = 1;
+ XFree(fbconfig);
+ }
+
+ return isPossible;
}
/* This is system-dependant */
if( fgStructure.CurrentWindow == NULL )
return 0;
- return fgStructure.CurrentWindow->Window.VisualInfo->visualid;
+ return fghGetConfig( GLX_VISUAL_ID );
#elif TARGET_HOST_MS_WINDOWS