Fixing the typecasts on the callback fetches and invocations to allow \"freeglut\" to compile with GCC 4.0

git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@584 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
fayjf 2005-04-26 17:44:57 +00:00
parent cd7f74dca3
commit 0bd8456a65
2 changed files with 18 additions and 5 deletions

View File

@ -403,7 +403,7 @@ do \
* type.
*/
#define FETCH_WCB(window,cbname) \
((FGCB ## cbname)((window).CallBacks[CB_ ## cbname]))
((window).CallBacks[CB_ ## cbname])
/*
* INVOKE_WCB() is used as:
@ -424,15 +424,28 @@ do \
* current window.
*
*/
#if TARGET_HOST_WIN32
#define INVOKE_WCB(window,cbname,arg_list) \
do \
{ \
if( FETCH_WCB( window, cbname ) ) \
{ \
FGCB ## cbname func = (FGCB ## cbname)(FETCH_WCB( window, cbname )); \
fgSetWindow( &window ); \
func arg_list; \
} \
} while( 0 )
#else
#define INVOKE_WCB(window,cbname,arg_list) \
do \
{ \
if( FETCH_WCB( window, cbname ) ) \
{ \
fgSetWindow( &window ); \
FETCH_WCB( window, cbname ) arg_list; \
((FGCB ## cbname)FETCH_WCB( window, cbname )) arg_list; \
} \
} while( 0 )
#endif
/*
* The window callbacks the user can supply us with. Should be kept portable.
@ -570,7 +583,7 @@ struct tagSFG_Structure
SFG_List WindowsToDestroy;
SFG_Window* CurrentWindow; /* The currently set window */
SFG_Menu* CurrentMenu; /* Same, but menu... */
SFG_Menu* CurrentMenu; /* Same, but menu... */
SFG_MenuContext* MenuContext; /* OpenGL rendering context for menus */
@ -693,7 +706,7 @@ extern SFG_State fgState;
* window set, respectively:
*/
#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
if ( ! fgStructure.CurrentWindow ) \
if ( ! fgStructure.CurrentWindow ) \
{ \
fgError ( " ERROR: Function <%s> called" \
" with no current window defined.", (string) ) ; \

View File

@ -165,7 +165,7 @@ void fgAddToWindowDestroyList( SFG_Window* window )
* to ensure that they are no longer called after this point.
*/
{
FGCBDestroy destroy = FETCH_WCB( *window, Destroy );
FGCBDestroy destroy = (FGCBDestroy)FETCH_WCB( *window, Destroy );
fghClearCallBacks( window );
SET_WCB( *window, Destroy, destroy );
}