#if TARGET_HOST_POSIX_X11
#include <limits.h> /* LONG_MAX */
+#include <unistd.h> /* usleep */
#endif
#if defined(_WIN32_WCE)
ppfd->cGreenShift = 0;
ppfd->cBlueShift = 0;
ppfd->cAlphaShift = 0;
- ppfd->cAccumBits = 0;
+ ppfd->cAccumBits = ( fgState.DisplayMode & GLUT_ACCUM ) ? 1 : 0;
ppfd->cAccumRedBits = 0;
ppfd->cAccumGreenBits = 0;
ppfd->cAccumBlueBits = 0;
#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
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 ;
XFree(visualInfo);
+ if( !isSubWindow)
+ XPeekIfEvent( fgDisplay.Display, &eventReturnBuffer, &fghWindowIsVisible, window->Window.Handle );
+
#elif TARGET_HOST_MS_WINDOWS
WNDCLASS wc;
*/
void fgCloseWindow( SFG_Window* window )
{
+ /* if we're in gamemode, call glutLeaveGameMode first to make sure the
+ * gamemode is properly closed before closing the window
+ */
+ if (fgStructure.GameModeWindow != NULL)
+ glutLeaveGameMode();
+
#if TARGET_HOST_POSIX_X11
if( window->Window.Context )