From: John F. Fay Date: Tue, 25 Jan 2011 05:56:38 +0000 (+0000) Subject: Fixing bug 3048705 -- "fgOpenWindow should only return after the window opens". ... X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=commitdiff_plain;h=42c82aef321e500f4f51115ba3244beabefbc3dc;p=freeglut Fixing bug 3048705 -- "fgOpenWindow should only return after the window opens". This is a *nix change and I am building on Windows, so somebody else needs to test this change. git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@891 7f0cb862-5218-0410-a997-914c9d46530a --- diff --git a/src/freeglut_window.c b/src/freeglut_window.c index 4663aba..800342d 100644 --- a/src/freeglut_window.c +++ b/src/freeglut_window.c @@ -31,6 +31,7 @@ #if TARGET_HOST_POSIX_X11 #include /* LONG_MAX */ +#include /* usleep */ #endif #if defined(_WIN32_WCE) @@ -905,6 +906,14 @@ static void get_display_origin(int *xp,int *yp) #endif +#if TARGET_HOST_POSIX_X11 +static Bool fghWindowIsVisible( Display *display, XEvent *event, XPointer arg) +{ + Window window = arg; + return (event->type == MapNotify) && (event->xmap.window == window); +} +#endif + /* * Opens a window. Requires a SFG_Window object created and attached @@ -921,6 +930,7 @@ void fgOpenWindow( SFG_Window* window, const char* title, XTextProperty textProperty; XSizeHints sizeHints; XWMHints wmHints; + XEvent eventReturnBuffer; /* return buffer required for a call */ unsigned long mask; int num_FBConfigs, i; unsigned int current_DisplayMode = fgState.DisplayMode ; @@ -1114,6 +1124,9 @@ void fgOpenWindow( SFG_Window* window, const char* title, XFree(visualInfo); + if( !isSubWindow) + XPeekIfEvent( fgDisplay.Display, &eventReturnBuffer, &fghWindowIsVisible, window->Window.Handle ); + #elif TARGET_HOST_MS_WINDOWS WNDCLASS wc;