/* * This function is automatically called on glutMainLoop() return. * It should deallocate and destroy all remnants of previous * glutInit()-enforced structure initialization... */ void fgDestroyStructure( void ) { /* Clean up the WindowsToDestroy list. */ fgCloseWindows( ); /* Make sure all windows and menus have been deallocated */ while( fgStructure.Menus.First ) fgDestroyMenu( ( SFG_Menu * )fgStructure.Menus.First ); while( fgStructure.Windows.First ) fgDestroyWindow( ( SFG_Window * )fgStructure.Windows.First ); }
/* * Destroys a menu object, removing all references to it */ void FGAPIENTRY glutDestroyMenu( int menuID ) { SFG_Menu* menu = fgMenuByID( menuID ); freeglut_assert_ready; freeglut_return_if_fail( menu ); /* * The menu object destruction code resides in freeglut_structure.c */ fgDestroyMenu( menu ); }
/* * Destroys a menu object, removing all references to it */ void FGAPIENTRY glutDestroyMenu( int menuID ) { SFG_Menu* menu; FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutDestroyMenu" ); menu = fgMenuByID( menuID ); freeglut_return_if_fail( menu ); /* The menu object destruction code resides in freeglut_structure.c */ fgDestroyMenu( menu ); }
/* * Destroys a menu object, removing all references to it */ void FGAPIENTRY glutDestroyMenu( int menuID ) { SFG_Menu* menu; FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutDestroyMenu" ); menu = fgMenuByID( menuID ); freeglut_return_if_fail( menu ); if (fgState.ActiveMenus) fgError("Menu manipulation not allowed while menus in use."); /* The menu object destruction code resides in freeglut_structure.c */ fgDestroyMenu( menu ); }