Applied Thomas Bastiani's patch fixing the behaviour of freeglut under X11 when
[freeglut] / src / x11 / fg_window_x11.c
index 1b90bf5..61a3bd6 100644 (file)
@@ -133,6 +133,7 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
     XEvent eventReturnBuffer; /* return buffer required for a call */
     unsigned long mask;
     unsigned int current_DisplayMode = fgState.DisplayMode ;
+    XConfigureEvent fakeEvent = {0};
 
     /* Save the display mode if we are creating a menu window */
     if( window->IsMenu && ( ! fgStructure.MenuContext ) )
@@ -239,6 +240,18 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
         &winAttr
     );
 
+    /* Fake configure event to force viewport setup
+     * even with no window manager.
+     */
+    fakeEvent.type = ConfigureNotify;
+    fakeEvent.display = fgDisplay.pDisplay.Display;
+    fakeEvent.window = window->Window.Handle;
+    fakeEvent.x = x;
+    fakeEvent.y = y;
+    fakeEvent.width = w;
+    fakeEvent.height = h;
+    XPutBackEvent(fgDisplay.pDisplay.Display, (XEvent*)&fakeEvent);
+
     /*
      * The GLX context creation, possibly trying the direct context rendering
      *  or else use the current context if the user has so specified