projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Removing the "atexit ( fgDeinitialize )" call from the Windows code per e-mail trail...
[freeglut]
/
src
/
freeglut_init.c
diff --git
a/src/freeglut_init.c
b/src/freeglut_init.c
index
2cc19ea
..
44bb42f
100644
(file)
--- a/
src/freeglut_init.c
+++ b/
src/freeglut_init.c
@@
-86,6
+86,7
@@
SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */
GL_FALSE, /* JoysticksInitialised */
0, /* NumActiveJoysticks */
GL_FALSE, /* InputDevsInitialised */
GL_FALSE, /* JoysticksInitialised */
0, /* NumActiveJoysticks */
GL_FALSE, /* InputDevsInitialised */
+ 0, /* MouseWheelTicks */
1, /* AuxiliaryBufferNumber */
4, /* SampleNumber */
1, /* MajorVersion */
1, /* AuxiliaryBufferNumber */
4, /* SampleNumber */
1, /* MajorVersion */
@@
-210,27
+211,27
@@
static int fghNetWMSupported(void)
/* Check if "hint" is present in "property" for "window". */
int fgHintPresent(Window window, Atom property, Atom hint)
{
/* Check if "hint" is present in "property" for "window". */
int fgHintPresent(Window window, Atom property, Atom hint)
{
- Atom ** atoms_ptr;
+ Atom *atoms;
int number_of_atoms;
int supported;
int i;
supported = 0;
int number_of_atoms;
int supported;
int i;
supported = 0;
- atoms_ptr = malloc(sizeof(Atom *));
number_of_atoms = fghGetWindowProperty(window,
property,
XA_ATOM,
number_of_atoms = fghGetWindowProperty(window,
property,
XA_ATOM,
- (unsigned char **) atoms_ptr);
+ (unsigned char **) &atoms);
for (i = 0; i < number_of_atoms; i++)
for (i = 0; i < number_of_atoms; i++)
- {
- if ((*atoms_ptr)[i] == hint)
+ {
+ if (atoms[i] == hint)
{
supported = 1;
break;
}
{
supported = 1;
break;
}
- }
+ }
+ XFree(atoms);
return supported;
}
return supported;
}
@@
-313,7
+314,7
@@
static void fghInitialize( const char* displayName )
/* What we need to do is to initialize the fgDisplay global structure here. */
fgDisplay.Instance = GetModuleHandle( NULL );
/* What we need to do is to initialize the fgDisplay global structure here. */
fgDisplay.Instance = GetModuleHandle( NULL );
- fgDisplay.DisplayName=strdup(displayName);
+ fgDisplay.DisplayName= displayName ? strdup(displayName) : 0 ;
atom = GetClassInfo( fgDisplay.Instance, _T("FREEGLUT"), &wc );
if( atom == 0 )
atom = GetClassInfo( fgDisplay.Instance, _T("FREEGLUT"), &wc );
if( atom == 0 )
@@
-390,6
+391,12
@@
static void fghInitialize( const char* displayName )
fgState.Initialised = GL_TRUE;
fgState.Initialised = GL_TRUE;
+ /* Avoid registering atexit callback on Win32 as it results in an access
+ * violation due to calling into a module which has been unloaded. */
+#ifndef TARGET_HOST_MS_WINDOWS
+ atexit(fgDeinitialize);
+#endif
+
/* InputDevice uses GlutTimerFunc(), so fgState.Initialised must be TRUE */
fgInitialiseInputDevices();
}
/* InputDevice uses GlutTimerFunc(), so fgState.Initialised must be TRUE */
fgInitialiseInputDevices();
}
@@
-403,8
+410,6
@@
void fgDeinitialize( void )
if( !fgState.Initialised )
{
if( !fgState.Initialised )
{
- fgWarning( "fgDeinitialize(): "
- "no valid initialization has been performed" );
return;
}
return;
}
@@
-443,6
+448,8
@@
void fgDeinitialize( void )
fgState.JoysticksInitialised = GL_FALSE;
fgState.InputDevsInitialised = GL_FALSE;
fgState.JoysticksInitialised = GL_FALSE;
fgState.InputDevsInitialised = GL_FALSE;
+ fgState.MouseWheelTicks = 0;
+
fgState.MajorVersion = 1;
fgState.MinorVersion = 0;
fgState.ContextFlags = 0;
fgState.MajorVersion = 1;
fgState.MinorVersion = 0;
fgState.ContextFlags = 0;
@@
-1162,7
+1169,7
@@
void FGAPIENTRY glutInitErrorFunc( void (* vfgError) ( const char *fmt, va_list
void FGAPIENTRY glutInitWarningFunc( void (* vfgWarning) ( const char *fmt, va_list ap ) )
{
/* This allows user programs to handle freeglut warnings */
void FGAPIENTRY glutInitWarningFunc( void (* vfgWarning) ( const char *fmt, va_list ap ) )
{
/* This allows user programs to handle freeglut warnings */
- fgState.ErrorFunc = vfgWarning;
+ fgState.WarningFunc = vfgWarning;
}
/*** END OF FILE ***/
}
/*** END OF FILE ***/