Aux color buffer support. Pass one of GLUT_AUX[1234] to glutInitDisplayMode.
[freeglut] / src / freeglut_window.c
index 3815716..a032ab4 100644 (file)
@@ -127,6 +127,16 @@ XVisualInfo* fgChooseVisual( void )
             ATTRIB_VAL( GLX_ACCUM_ALPHA_SIZE, 1 );
     }
 
+    if( fgState.DisplayMode & GLUT_AUX1 )
+        ATTRIB_VAL( GLX_AUX_BUFFERS, 1 );
+    if( fgState.DisplayMode & GLUT_AUX2 )
+        ATTRIB_VAL( GLX_AUX_BUFFERS, 2 );
+    if( fgState.DisplayMode & GLUT_AUX3 )
+        ATTRIB_VAL( GLX_AUX_BUFFERS, 3 );
+    if( fgState.DisplayMode & GLUT_AUX4 )
+        ATTRIB_VAL( GLX_AUX_BUFFERS, 4 );
+
+
     /* Push a null at the end of the list */
     ATTRIB( None );
 
@@ -316,7 +326,7 @@ void fgOpenWindow( SFG_Window* window, const char* title,
      */
     winAttr.event_mask        =
         StructureNotifyMask | SubstructureNotifyMask | ExposureMask |
-        ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyRelease |
+        ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask |
         VisibilityChangeMask | EnterWindowMask | LeaveWindowMask |
         PointerMotionMask | ButtonMotionMask;
     winAttr.background_pixmap = None;
@@ -401,12 +411,6 @@ void fgOpenWindow( SFG_Window* window, const char* title,
     }
 #endif
 
-    glXMakeCurrent(
-        fgDisplay.Display,
-        window->Window.Handle,
-        window->Window.Context
-    );
-
     /*
      * XXX Assume the new window is visible by default
      * XXX Is this a  safe assumption?
@@ -452,6 +456,12 @@ void fgOpenWindow( SFG_Window* window, const char* title,
     XSetWMProtocols( fgDisplay.Display, window->Window.Handle,
                      &fgDisplay.DeleteWindow, 1 );
 
+    glXMakeCurrent(
+        fgDisplay.Display,
+        window->Window.Handle,
+        window->Window.Context
+    );
+
     XMapWindow( fgDisplay.Display, window->Window.Handle );
 
 #elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE