Rewrote glutFullscreen().
authorChristopher John Purnell <cjp@lost.org.uk>
Wed, 29 Oct 2003 18:19:17 +0000 (18:19 +0000)
committerChristopher John Purnell <cjp@lost.org.uk>
Wed, 29 Oct 2003 18:19:17 +0000 (18:19 +0000)
It now correctly places the window in X11.
It now uses system dependant code for more efficient use of
windowing system calls.

git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@265 7f0cb862-5218-0410-a997-914c9d46530a

src/freeglut_window.c

index 14733e2..0c65fc4 100644 (file)
@@ -1213,15 +1213,52 @@ void FGAPIENTRY glutFullScreen( void )
 {
     freeglut_assert_ready; freeglut_assert_window;
 
-    /*
-     * Just have the window repositioned and resized
-     */
-    glutPositionWindow( 0, 0 );
+#if TARGET_HOST_UNIX_X11
+    {
+        int x, y;
+        Window w;
+
+        XTranslateCoordinates(
+            fgDisplay.Display,
+            fgStructure.Window->Window.Handle,
+            fgDisplay.RootWindow,
+            0, 0, &x, &y, &w
+        );
+
+        if (w)
+        {
+            XTranslateCoordinates(
+                fgDisplay.Display,
+                fgStructure.Window->Window.Handle,
+                w, 0, 0, &x, &y, &w
+            );
+
+            x = -x;
+            y = -y;
+        }
+        else
+        {
+            x = y = 0;
+        }
 
-    glutReshapeWindow(
+        XMoveResizeWindow(
+            fgDisplay.Display,
+            fgStructure.Window->Window.Handle,
+            x, y,
+            fgDisplay.ScreenWidth,
+            fgDisplay.ScreenHeight
+        );
+        XFlush( fgDisplay.Display );
+    }
+#elif TARGET_HOST_WIN32
+    MoveWindow(
+        fgStructure.Window->Window.Handle,
+        0, 0,
         fgDisplay.ScreenWidth,
-        fgDisplay.ScreenHeight
+        fgDisplay.ScreenHeight,
+        TRUE
     );
+#endif
 }
 
 /*
@@ -1238,12 +1275,3 @@ void FGAPIENTRY glutSetWindowData(void* data)
 }
 
 /*** END OF FILE ***/
-
-
-
-
-
-
-
-
-