* 32-bit, where the GLUT API return value is also overflowed.
*/
unsigned long fgSystemTime(void) {
-#if TARGET_HOST_POSIX_X11
+#if TARGET_HOST_SOLARIS || HAVE_GETTIMEOFDAY
struct timeval now;
gettimeofday( &now, NULL );
return now.tv_usec/1000 + now.tv_sec*1000;
* XXX track ButtonPress/ButtonRelease events in our own
* XXX bit-mask?
*/
- fgState.Modifiers = fghGetXModifiers( event.xmotion.state );
+ fgState.Modifiers = fghGetXModifiers( event.xmotion.state );
if ( event.xmotion.state & ( Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask ) ) {
INVOKE_WCB( *window, Motion, ( event.xmotion.x,
event.xmotion.y ) );
} else {
INVOKE_WCB( *window, Passive, ( event.xmotion.x,
event.xmotion.y ) );
- }
- fgState.Modifiers = INVALID_MODIFIERS;
+ }
+ fgState.Modifiers = INVALID_MODIFIERS;
}
break;
/* Cease processing this event if it is auto repeated */
if (window->State.KeyRepeating)
+ {
+ if (event.type == KeyPress) window->State.KeyRepeating = GL_FALSE;
break;
+ }
if( event.type == KeyPress )
{
case XK_F11: special = GLUT_KEY_F11; break;
case XK_F12: special = GLUT_KEY_F12; break;
+ case XK_KP_Left:
case XK_Left: special = GLUT_KEY_LEFT; break;
+ case XK_KP_Right:
case XK_Right: special = GLUT_KEY_RIGHT; break;
+ case XK_KP_Up:
case XK_Up: special = GLUT_KEY_UP; break;
+ case XK_KP_Down:
case XK_Down: special = GLUT_KEY_DOWN; break;
case XK_KP_Prior:
case XK_End: special = GLUT_KEY_END; break;
case XK_KP_Insert:
case XK_Insert: special = GLUT_KEY_INSERT; break;
+
+ case XK_Num_Lock : special = GLUT_KEY_NUM_LOCK; break;
+ case XK_KP_Begin : special = GLUT_KEY_BEGIN; break;
+ case XK_KP_Delete: special = GLUT_KEY_DELETE; break;
}
/*
case ReparentNotify:
break; /* XXX Should disable this event */
+ /* Not handled */
+ case GravityNotify:
+ break;
+
default:
fgWarning ("Unknown X event type: %d\n", event.type);
break;
{
SFG_Window* window;
PAINTSTRUCT ps;
- LONG lRet = 1;
+ LRESULT lRet = 1;
FREEGLUT_INTERNAL_ERROR_EXIT_IF_NOT_INITIALISED ( "Event Handler" ) ;
window->Window.Context =
wglCreateContext( window->Window.Device );
}
+
+#if !defined(_WIN32_WCE)
+ fgNewWGLCreateContext( window );
+#endif
}
window->State.NeedToResize = GL_TRUE;
GetKeyboardState( state );
- if( ToAscii( wParam, 0, state, code, 0 ) == 1 )
+ if( ToAscii( (UINT)wParam, 0, state, code, 0 ) == 1 )
wParam=code[ 0 ];
INVOKE_WCB( *window, KeyboardUp,
case SC_HOTKEY :
break ;
+#if(WINVER >= 0x0400)
+ case SC_DEFAULT :
+ break ;
+
+ case SC_MONITORPOWER :
+ break ;
+
+ case SC_CONTEXTHELP :
+ break ;
+#endif /* WINVER >= 0x0400 */
+
default:
#if _DEBUG
fgWarning( "Unknown wParam type 0x%x", wParam );