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:
parent
cd7f74dca3
commit
0bd8456a65
@ -403,7 +403,7 @@ do \
|
|||||||
* type.
|
* type.
|
||||||
*/
|
*/
|
||||||
#define FETCH_WCB(window,cbname) \
|
#define FETCH_WCB(window,cbname) \
|
||||||
((FGCB ## cbname)((window).CallBacks[CB_ ## cbname]))
|
((window).CallBacks[CB_ ## cbname])
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* INVOKE_WCB() is used as:
|
* INVOKE_WCB() is used as:
|
||||||
@ -424,15 +424,28 @@ do \
|
|||||||
* current window.
|
* 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) \
|
#define INVOKE_WCB(window,cbname,arg_list) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
if( FETCH_WCB( window, cbname ) ) \
|
if( FETCH_WCB( window, cbname ) ) \
|
||||||
{ \
|
{ \
|
||||||
fgSetWindow( &window ); \
|
fgSetWindow( &window ); \
|
||||||
FETCH_WCB( window, cbname ) arg_list; \
|
((FGCB ## cbname)FETCH_WCB( window, cbname )) arg_list; \
|
||||||
} \
|
} \
|
||||||
} while( 0 )
|
} while( 0 )
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The window callbacks the user can supply us with. Should be kept portable.
|
* The window callbacks the user can supply us with. Should be kept portable.
|
||||||
@ -570,7 +583,7 @@ struct tagSFG_Structure
|
|||||||
SFG_List WindowsToDestroy;
|
SFG_List WindowsToDestroy;
|
||||||
|
|
||||||
SFG_Window* CurrentWindow; /* The currently set window */
|
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 */
|
SFG_MenuContext* MenuContext; /* OpenGL rendering context for menus */
|
||||||
|
|
||||||
@ -693,7 +706,7 @@ extern SFG_State fgState;
|
|||||||
* window set, respectively:
|
* window set, respectively:
|
||||||
*/
|
*/
|
||||||
#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
|
#define FREEGLUT_EXIT_IF_NO_WINDOW( string ) \
|
||||||
if ( ! fgStructure.CurrentWindow ) \
|
if ( ! fgStructure.CurrentWindow ) \
|
||||||
{ \
|
{ \
|
||||||
fgError ( " ERROR: Function <%s> called" \
|
fgError ( " ERROR: Function <%s> called" \
|
||||||
" with no current window defined.", (string) ) ; \
|
" with no current window defined.", (string) ) ; \
|
||||||
|
@ -165,7 +165,7 @@ void fgAddToWindowDestroyList( SFG_Window* window )
|
|||||||
* to ensure that they are no longer called after this point.
|
* 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 );
|
fghClearCallBacks( window );
|
||||||
SET_WCB( *window, Destroy, destroy );
|
SET_WCB( *window, Destroy, destroy );
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user