{
FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutTimerFunc" );
if( callback )
- glutTimerFuncUcall( timeOut, fghTimerFuncCallback, timerID, (FGCBUserData)callback );
+ {
+ FGCBTimer* reference = &callback;
+ glutTimerFuncUcall( timeOut, fghTimerFuncCallback, timerID, *((FGCBUserData*)reference) );
+ }
else
glutTimerFuncUcall( timeOut, NULL, timerID, NULL );
}
static void fghJoystickFuncCallback( unsigned int buttons, int axis0, int axis1, int axis2, FGCBUserData userData )
{
- FGCBJoystick callback = (FGCBJoystick)userData;
- callback( buttons, axis0, axis1, axis2 );
+ FGCBJoystick* callback = (FGCBJoystick*)&userData;
+ (*callback)( buttons, axis0, axis1, axis2 );
}
void FGAPIENTRY glutJoystickFunc( FGCBJoystick callback, int pollInterval )
{
FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutJoystickFunc" );
if( callback )
- glutJoystickFuncUcall( fghJoystickFuncCallback, pollInterval, (FGCBUserData)callback );
+ {
+ FGCBJoystick* reference = &callback;
+ glutJoystickFuncUcall( fghJoystickFuncCallback, pollInterval, *((FGCBUserData*)reference) );
+ }
else
glutJoystickFuncUcall( NULL, pollInterval, NULL );
}