fgState.ErrorFuncData = userData;
}
-static void glutInitErrorFuncCallback( const char *fmt, va_list ap, FGCBUserData userData )
+static void fghInitErrorFuncCallback( const char *fmt, va_list ap, FGCBUserData userData )
{
- FGError callback = (FGError)userData;
- callback( fmt, ap );
+ FGError* callback = (FGError*)&userData;
+ (*callback)( fmt, ap );
}
void FGAPIENTRY glutInitErrorFunc( FGError callback )
{
- if (callback)
- glutInitErrorFuncUcall( glutInitErrorFuncCallback, (FGCBUserData)callback );
- else
- glutInitErrorFuncUcall( NULL, NULL );
+ if (callback)
+ {
+ FGError* reference = &callback;
+ glutInitErrorFuncUcall( fghInitErrorFuncCallback, *((FGCBUserData*)reference) );
+ }
+ else
+ {
+ glutInitErrorFuncUcall( NULL, NULL );
+ }
}
/*
fgState.WarningFuncData = userData;
}
-static void glutInitWarningFuncCallback( const char *fmt, va_list ap, FGCBUserData userData )
+static void fghInitWarningFuncCallback( const char *fmt, va_list ap, FGCBUserData userData )
{
- FGWarning callback = (FGWarning)userData;
- callback( fmt, ap );
+ FGWarning* callback = (FGWarning*)&userData;
+ (*callback)( fmt, ap );
}
void FGAPIENTRY glutInitWarningFunc( FGWarning callback )
{
- if (callback)
- glutInitWarningFuncUcall( glutInitWarningFuncCallback, (FGCBUserData)callback );
- else
- glutInitWarningFuncUcall( NULL, NULL );
+ if (callback)
+ {
+ FGWarning* reference = &callback;
+ glutInitWarningFuncUcall( fghInitWarningFuncCallback, *((FGCBUserData*)reference) );
+ }
+ else
+ {
+ glutInitWarningFuncUcall( NULL, NULL );
+ }
}
/*** END OF FILE ***/