X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffg_callbacks.c;h=182fe2e2f8418e8499aa1e1bcd5de0f1e72bc821;hb=155d9d0f851f035871188033b7b757ac2fd02693;hp=0e656a805ead2c10661fe800d5ffa0c9c4b6471b;hpb=369e02f3912ca0f768d98e49fb1198e80f44e078;p=freeglut diff --git a/src/fg_callbacks.c b/src/fg_callbacks.c index 0e656a8..182fe2e 100644 --- a/src/fg_callbacks.c +++ b/src/fg_callbacks.c @@ -83,7 +83,10 @@ void FGAPIENTRY glutTimerFunc( unsigned int timeOut, FGCBTimer callback, int tim { 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 ); } @@ -270,15 +273,18 @@ void FGAPIENTRY glutJoystickFuncUcall( FGCBJoystickUC callback, int pollInterval 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 ); }