Moving the Windows-specific "glutInitWithExit" function to a Windows-specific file
[freeglut] / src / Common / freeglut_init.c
index 0543840..07f7528 100644 (file)
@@ -100,16 +100,16 @@ SFG_State fgState = { { -1, -1, GL_FALSE },  /* Position */
 \r
 /* -- PRIVATE FUNCTIONS ---------------------------------------------------- */\r
 \r
-extern void fghInitialize( const char* displayName );\r
-extern void fghDeinitialiseInputDevices ( void );\r
-extern void fghCloseDisplay ( void );\r
+extern void fgPlatformInitialize( const char* displayName );\r
+extern void fgPlatformDeinitialiseInputDevices ( void );\r
+extern void fgPlatformCloseDisplay ( void );\r
 \r
 #if TARGET_HOST_POSIX_X11\r
 \r
 /* Return the atom associated with "name". */\r
 static Atom fghGetAtom(const char * name)\r
 {\r
-  return XInternAtom(fgDisplay.Display, name, False);\r
+  return XInternAtom(fgDisplay.pDisplay.Display, name, False);\r
 }\r
 \r
 /*\r
@@ -137,7 +137,7 @@ static int fghGetWindowProperty(Window window,
   unsigned long temp_bytes_after;        /*  Not used. */\r
 \r
 \r
-  status = XGetWindowProperty(fgDisplay.Display,\r
+  status = XGetWindowProperty(fgDisplay.pDisplay.Display,\r
                              window,\r
                              property,\r
                              0,\r
@@ -181,7 +181,7 @@ static int fghNetWMSupported(void)
    * Check that the window manager has set this property on the root window.\r
    * The property must be the ID of a child window.\r
    */\r
-  number_of_windows = fghGetWindowProperty(fgDisplay.RootWindow,\r
+  number_of_windows = fghGetWindowProperty(fgDisplay.pDisplay.RootWindow,\r
                                            wm_check,\r
                                            XA_WINDOW,\r
                                            (unsigned char **) window_ptr_1);\r
@@ -246,49 +246,49 @@ int fgHintPresent(Window window, Atom property, Atom hint)
 /*\r
  * A call to this function should initialize all the display stuff...\r
  */\r
-static void fghInitialize( const char* displayName )\r
+void fgPlatformInitialize( const char* displayName )\r
 {\r
-    fgDisplay.Display = XOpenDisplay( displayName );\r
+    fgDisplay.pDisplay.Display = XOpenDisplay( displayName );\r
 \r
-    if( fgDisplay.Display == NULL )\r
+    if( fgDisplay.pDisplay.Display == NULL )\r
         fgError( "failed to open display '%s'", XDisplayName( displayName ) );\r
 \r
-    if( !glXQueryExtension( fgDisplay.Display, NULL, NULL ) )\r
+    if( !glXQueryExtension( fgDisplay.pDisplay.Display, NULL, NULL ) )\r
         fgError( "OpenGL GLX extension not supported by display '%s'",\r
             XDisplayName( displayName ) );\r
 \r
-    fgDisplay.Screen = DefaultScreen( fgDisplay.Display );\r
-    fgDisplay.RootWindow = RootWindow(\r
-        fgDisplay.Display,\r
-        fgDisplay.Screen\r
+    fgDisplay.pDisplay.Screen = DefaultScreen( fgDisplay.pDisplay.Display );\r
+    fgDisplay.pDisplay.RootWindow = RootWindow(\r
+        fgDisplay.pDisplay.Display,\r
+        fgDisplay.pDisplay.Screen\r
     );\r
 \r
     fgDisplay.ScreenWidth  = DisplayWidth(\r
-        fgDisplay.Display,\r
-        fgDisplay.Screen\r
+        fgDisplay.pDisplay.Display,\r
+        fgDisplay.pDisplay.Screen\r
     );\r
     fgDisplay.ScreenHeight = DisplayHeight(\r
-        fgDisplay.Display,\r
-        fgDisplay.Screen\r
+        fgDisplay.pDisplay.Display,\r
+        fgDisplay.pDisplay.Screen\r
     );\r
 \r
     fgDisplay.ScreenWidthMM = DisplayWidthMM(\r
-        fgDisplay.Display,\r
-        fgDisplay.Screen\r
+        fgDisplay.pDisplay.Display,\r
+        fgDisplay.pDisplay.Screen\r
     );\r
     fgDisplay.ScreenHeightMM = DisplayHeightMM(\r
-        fgDisplay.Display,\r
-        fgDisplay.Screen\r
+        fgDisplay.pDisplay.Display,\r
+        fgDisplay.pDisplay.Screen\r
     );\r
 \r
-    fgDisplay.Connection = ConnectionNumber( fgDisplay.Display );\r
+    fgDisplay.pDisplay.Connection = ConnectionNumber( fgDisplay.pDisplay.Display );\r
 \r
     /* Create the window deletion atom */\r
-    fgDisplay.DeleteWindow = fghGetAtom("WM_DELETE_WINDOW");\r
+    fgDisplay.pDisplay.DeleteWindow = fghGetAtom("WM_DELETE_WINDOW");\r
 \r
     /* Create the state and full screen atoms */\r
-    fgDisplay.State           = None;\r
-    fgDisplay.StateFullScreen = None;\r
+    fgDisplay.pDisplay.State           = None;\r
+    fgDisplay.pDisplay.StateFullScreen = None;\r
 \r
     if (fghNetWMSupported())\r
     {\r
@@ -296,17 +296,17 @@ static void fghInitialize( const char* displayName )
       const Atom state     = fghGetAtom("_NET_WM_STATE");\r
       \r
       /* Check if the state hint is supported. */\r
-      if (fgHintPresent(fgDisplay.RootWindow, supported, state))\r
+      if (fgHintPresent(fgDisplay.pDisplay.RootWindow, supported, state))\r
       {\r
         const Atom full_screen = fghGetAtom("_NET_WM_STATE_FULLSCREEN");\r
         \r
-        fgDisplay.State = state;\r
+        fgDisplay.pDisplay.State = state;\r
         \r
         /* Check if the window manager supports full screen. */\r
         /**  Check "_NET_WM_ALLOWED_ACTIONS" on our window instead? **/\r
-        if (fgHintPresent(fgDisplay.RootWindow, supported, full_screen))\r
+        if (fgHintPresent(fgDisplay.pDisplay.RootWindow, supported, full_screen))\r
         {\r
-          fgDisplay.StateFullScreen = full_screen;\r
+          fgDisplay.pDisplay.StateFullScreen = full_screen;\r
         }\r
       }\r
     }\r
@@ -437,7 +437,7 @@ void fghCloseInputDevices ( void )
 \r
 \r
 #if TARGET_HOST_POSIX_X11\r
-static void fghDeinitialiseInputDevices ( void )\r
+void fgPlatformDeinitialiseInputDevices ( void )\r
 {\r
        fghCloseInputDevices ();\r
 \r
@@ -446,19 +446,19 @@ static void fghDeinitialiseInputDevices ( void )
 }\r
 \r
 \r
-static void fghCloseDisplay ( void )\r
+void fgPlatformCloseDisplay ( void )\r
 {\r
     /*\r
      * Make sure all X-client data we have created will be destroyed on\r
      * display closing\r
      */\r
-    XSetCloseDownMode( fgDisplay.Display, DestroyAll );\r
+    XSetCloseDownMode( fgDisplay.pDisplay.Display, DestroyAll );\r
 \r
     /*\r
      * Close the display connection, destroying all windows we have\r
      * created so far\r
      */\r
-    XCloseDisplay( fgDisplay.Display );\r
+    XCloseDisplay( fgDisplay.pDisplay.Display );\r
 }\r
 \r
 #endif\r
@@ -486,7 +486,7 @@ void fgDeinitialize( void )
     {\r
 #if TARGET_HOST_POSIX_X11\r
         /* Note that the MVisualInfo is not owned by the MenuContext! */\r
-        glXDestroyContext( fgDisplay.Display, fgStructure.MenuContext->MContext );\r
+        glXDestroyContext( fgDisplay.pDisplay.Display, fgStructure.MenuContext->MContext );\r
 #endif\r
         free( fgStructure.MenuContext );\r
         fgStructure.MenuContext = NULL;\r
@@ -506,7 +506,7 @@ void fgDeinitialize( void )
         free( timer );\r
     }\r
 \r
-       fghDeinitialiseInputDevices ();\r
+       fgPlatformDeinitialiseInputDevices ();\r
 \r
        fgState.MouseWheelTicks = 0;\r
 \r
@@ -560,13 +560,13 @@ void fgDeinitialize( void )
         fgState.ProgramName = NULL;\r
     }\r
 \r
-       fghCloseDisplay ();\r
+       fgPlatformCloseDisplay ();\r
 \r
     fgState.Initialised = GL_FALSE;\r
 }\r
 \r
 \r
-#if defined TARGET_HOST_MS_WINDOWS\r
+#if TARGET_HOST_MS_WINDOWS\r
 #define NoValue         0x0000\r
 #define XValue          0x0001\r
 #define YValue          0x0002\r
@@ -617,7 +617,7 @@ void FGAPIENTRY glutInit( int* pargc, char** argv )
      * in the program arguments, we will use the DISPLAY environment\r
      * variable for opening the X display (see code above):\r
      */\r
-    fghInitialize( displayName );\r
+    fgPlatformInitialize( displayName );\r
 \r
     /*\r
      * Geometry parsing deffered until here because we may need the screen\r
@@ -648,16 +648,6 @@ void FGAPIENTRY glutInit( int* pargc, char** argv )
     }\r
 }\r
 \r
-#if TARGET_HOST_MS_WINDOWS\r
-void (__cdecl *__glutExitFunc)( int return_value ) = NULL;\r
-\r
-void FGAPIENTRY __glutInitWithExit( int *pargc, char **argv, void (__cdecl *exit_function)(int) )\r
-{\r
-  __glutExitFunc = exit_function;\r
-  glutInit(pargc, argv);\r
-}\r
-#endif\r
-\r
 /*\r
  * Undoes all the "glutInit" stuff\r
  */\r