From 1ac66fba611c0ad79cf0524cf02986103f319cc8 Mon Sep 17 00:00:00 2001 From: cjp Date: Wed, 29 Oct 2003 18:19:17 +0000 Subject: [PATCH] Rewrote glutFullscreen(). 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: https://svn.code.sf.net/p/freeglut/code/trunk@265 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/freeglut_window.c | 58 ++++++++++++++++++------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/freeglut/freeglut/src/freeglut_window.c b/freeglut/freeglut/src/freeglut_window.c index 14733e2..0c65fc4 100644 --- a/freeglut/freeglut/src/freeglut_window.c +++ b/freeglut/freeglut/src/freeglut_window.c @@ -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; - glutReshapeWindow( + 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; + } + + 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 ***/ - - - - - - - - -