A commit on behalf of John (in turn, and in part, also on behalf of
[freeglut] / src / freeglut_window.c
index f99b673..67b94c3 100644 (file)
@@ -268,7 +268,7 @@ void fgOpenWindow( SFG_Window* window, const char* title,
      * XXX simplify this.
      */
     if( !window->IsMenu )
-       window->Window.VisualInfo = fgChooseVisual( );
+        window->Window.VisualInfo = fgChooseVisual( );
     else if( fgStructure.MenuContext )
         window->Window.VisualInfo = fgChooseVisual( );
     else
@@ -310,7 +310,7 @@ void fgOpenWindow( SFG_Window* window, const char* title,
     window->State.IsOffscreen = GL_FALSE;
     if( fgState.DisplayMode & GLUT_OFFSCREEN )
     {
-       window->State.IsOffscreen = GL_TRUE;
+        window->State.IsOffscreen = GL_TRUE;
         window->Window.Pixmap = XCreatePixmap(
             fgDisplay.Display, fgDisplay.RootWindow,
             w, h,
@@ -645,14 +645,20 @@ int FGAPIENTRY glutCreateWindow( const char* title )
  */
 int FGAPIENTRY glutCreateSubWindow( int parentID, int x, int y, int w, int h )
 {
-    SFG_Window* window = NULL;
-    SFG_Window* parent = NULL;
-
-    freeglut_assert_ready;
-    parent = fgWindowByID( parentID );
-    freeglut_return_val_if_fail( parent != NULL, 0 );
-    window = fgCreateWindow( parent, "", x, y, w, h, GL_FALSE, GL_FALSE );
-    return window->ID;
+    int ret = 0;
+    
+    if( GL_FALSE == fgStructure.Window->State.IsOffscreen )
+    {
+        SFG_Window* window = NULL;
+        SFG_Window* parent = NULL;
+
+        freeglut_assert_ready;
+        parent = fgWindowByID( parentID );
+        freeglut_return_val_if_fail( parent != NULL, 0 );
+        window = fgCreateWindow( parent, "", x, y, w, h, GL_FALSE, GL_FALSE );
+        ret = window->ID;
+    }
+    return ret;
 }
 
 /*