static int fghHaveJoystick( void )
{
SFG_Enumerator enumerator;
+
enumerator.found = GL_FALSE;
enumerator.data = NULL;
fgEnumWindows( fghCheckJoystickCallback, &enumerator );
static int fghHavePendingRedisplays (void)
{
SFG_Enumerator enumerator;
+
enumerator.found = GL_FALSE;
enumerator.data = NULL;
fgEnumWindows( fghHavePendingRedisplaysCallback, &enumerator );
window->State.MouseX = event.a.x; \
window->State.MouseY = event.a.y;
- freeglut_assert_ready;
+ FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMainLoopEvent" );
while( XPending( fgDisplay.Display ) )
{
special_cb = FETCH_WCB( *window, SpecialUp );
}
- /*
- * Is there a keyboard/special callback hooked for this window?
- */
+ /* Is there a keyboard/special callback hooked for this window? */
if( keyboard_cb || special_cb )
{
XComposeStatus composeStatus;
KeySym keySym;
int len;
- /*
- * Check for the ASCII/KeySym codes associated with the event:
- */
+ /* Check for the ASCII/KeySym codes associated with the event: */
len = XLookupString( &event.xkey, asciiCode, sizeof(asciiCode),
&keySym, &composeStatus
);
- /*
- * GLUT API tells us to have two separate callbacks...
- */
+ /* GLUT API tells us to have two separate callbacks... */
if( len > 0 )
{
- /*
- * ...one for the ASCII translateable keypresses...
- */
+ /* ...one for the ASCII translateable keypresses... */
if( keyboard_cb )
{
fgSetWindow( window );
MSG stMsg;
+ FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMainLoopEvent" );
+
while( PeekMessage( &stMsg, NULL, 0, 0, PM_NOREMOVE ) )
{
if( GetMessage( &stMsg, NULL, 0, 0 ) == 0 )
SFG_Window *window = (SFG_Window *)fgStructure.Windows.First ;
#endif
- freeglut_assert_ready;
+ FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutMainLoop" );
#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE
/*
*/
void FGAPIENTRY glutLeaveMainLoop( void )
{
+ FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutLeaveMainLoop" );
fgState.ExecState = GLUT_EXEC_STATE_STOP ;
}
LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam )
{
- SFG_Window* window = fgWindowByHandle( hWnd );
+ SFG_Window* window;
PAINTSTRUCT ps;
LONG lRet = 1;
+ FREEGLUT_INTERNAL_ERROR_EXIT_IF_NOT_INITIALISED ( "Event Handler" ) ;
+
+ window = fgWindowByHandle( hWnd );
+
if ( ( window == NULL ) && ( uMsg != WM_CREATE ) )
return DefWindowProc( hWnd, uMsg, wParam, lParam );
case WM_CREATE:
/* The window structure is passed as the creation structure paramter... */
window = (SFG_Window *) (((LPCREATESTRUCT) lParam)->lpCreateParams);
- assert( window != NULL );
+ FREEGLUT_INTERNAL_ERROR_EXIT ( ( window != NULL ), "Cannot create window",
+ "fgWindowProc" );
window->Window.Handle = hWnd;
window->Window.Device = GetDC( hWnd );
* XXX function (or perhaps invoke glutSetCursor())?
* XXX That is, why are we duplicating code, here, from
* XXX glutSetCursor()? The WIN32 code should be able to just
- * XXX call glutSetCurdsor() instead of defining two macros
+ * XXX call glutSetCursor() instead of defining two macros
* XXX and implementing a nested case in-line.
*/
case WM_SETCURSOR:
window->State.MouseX = mouse_pos.x;
window->State.MouseY = mouse_pos.y;
- /*
- * Convert the Win32 keystroke codes to GLUTtish way
- */
+ /* Convert the Win32 keystroke codes to GLUTtish way */
# define KEY(a,b) case a: keypress = b; break;
switch( wParam )
KEY( VK_INSERT, GLUT_KEY_INSERT );
case VK_DELETE:
- /*
- * The delete key should be treated as an ASCII keypress:
- */
+ /* The delete key should be treated as an ASCII keypress: */
INVOKE_WCB( *window, Keyboard,
( 127, window->State.MouseX, window->State.MouseY )
);
KEY( VK_INSERT, GLUT_KEY_INSERT );
case VK_DELETE:
- /*
- * The delete key should be treated as an ASCII keypress:
- */
+ /* The delete key should be treated as an ASCII keypress: */
INVOKE_WCB( *window, KeyboardUp,
( 127, window->State.MouseX, window->State.MouseY )
);
/*lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); */
break;
- /*
- * Other messages that I have seen and which are not handled already
- */
+ /* Other messages that I have seen and which are not handled already */
case WM_SETTEXT: /* 0x000c */
lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
/* Pass it on to "DefWindowProc" to set the window text */
break;
default:
- /*
- * Handle unhandled messages
- */
+ /* Handle unhandled messages */
lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
break;
}