X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_main.c;h=485ee4bf88e2bfb8df24df30942b8ceb26447e36;hb=4a723a56942a87827f8b8724e3433e482fd2ac39;hp=dcb5bd98410bae5a395e71151d3b4a5de3e87b9b;hpb=1b0d16ef859db5c028546ff865ec586778044ab8;p=freeglut diff --git a/src/freeglut_main.c b/src/freeglut_main.c index dcb5bd9..485ee4b 100644 --- a/src/freeglut_main.c +++ b/src/freeglut_main.c @@ -29,8 +29,6 @@ #include "config.h" #endif -#define G_LOG_DOMAIN "freeglut-main" - #include "../include/GL/freeglut.h" #include "freeglut_internal.h" @@ -90,7 +88,7 @@ static void fghRedrawWindowByHandle fgSetWindow( window ); window->State.Redisplay = FALSE; - window->Callbacks.Display(); + window->Callbacks.Display( ); } /* @@ -105,7 +103,7 @@ static void fghReshapeWindowByHandle ( HWND handle, int width, int height ) #endif { - SFG_Window *current_window = fgStructure.Window ; + SFG_Window *current_window = fgStructure.Window; SFG_Window* window = fgWindowByHandle( handle ); freeglut_return_if_fail( window != NULL ); @@ -123,10 +121,10 @@ static void fghReshapeWindowByHandle * But without this we get this bad behaviour whenever we resize the * window. */ - window->State.Redisplay = TRUE ; + window->State.Redisplay = TRUE; if( window->IsMenu ) - fgSetWindow( current_window ) ; + fgSetWindow( current_window ); } /* @@ -143,15 +141,15 @@ static void fghcbDisplayWindow( SFG_Window *window, SFG_Enumerator *enumerator ) fgSetWindow( window ); window->State.Redisplay = FALSE; - window->Callbacks.Display(); - fgSetWindow( current_window ) ; + window->Callbacks.Display( ); + fgSetWindow( current_window ); } #elif TARGET_HOST_WIN32 if( window->State.NeedToResize ) { - SFG_Window *current_window = fgStructure.Window ; + SFG_Window *current_window = fgStructure.Window; fgSetWindow( window ); @@ -162,7 +160,7 @@ static void fghcbDisplayWindow( SFG_Window *window, SFG_Enumerator *enumerator ) ); window->State.NeedToResize = FALSE; - fgSetWindow ( current_window ) ; + fgSetWindow ( current_window ); } if( (window->Callbacks.Display != NULL) && @@ -201,7 +199,7 @@ static void fghDisplayAll( void ) static void fghcbCheckJoystickPolls( SFG_Window *window, SFG_Enumerator *enumerator ) { - long int checkTime = fgElapsedTime(); + long int checkTime = fgElapsedTime( ); if( window->State.JoystickLastPoll + window->State.JoystickPollRate <= checkTime ) @@ -231,7 +229,7 @@ static void fghCheckJoystickPolls( void ) */ static void fghCheckTimers( void ) { - long checkTime = fgElapsedTime(); + long checkTime = fgElapsedTime( ); SFG_Timer *timer, *next; SFG_List timedOut; @@ -278,9 +276,9 @@ long fgElapsedTime( void ) elapsed = (now.tv_usec - fgState.Time.Value.tv_usec) / 1000; elapsed += (now.tv_sec - fgState.Time.Value.tv_sec) * 1000; - return( elapsed ); + return elapsed; #elif TARGET_HOST_WIN32 - return (timeGetTime() - fgState.Time.Value); + return timeGetTime() - fgState.Time.Value; #endif } @@ -409,15 +407,14 @@ static void fgSleepForEvents( void ) struct timeval wait; long msec; - if( fgState.IdleCallback || - fgHavePendingRedisplays() ) + if( fgState.IdleCallback || fgHavePendingRedisplays( ) ) return; socket = ConnectionNumber( fgDisplay.Display ); FD_ZERO( &fdset ); FD_SET( socket, &fdset ); - msec = fgNextTimer(); - if( fgHaveJoystick() ) + msec = fgNextTimer( ); + if( fgHaveJoystick( ) ) msec = MIN( msec, 10 ); wait.tv_sec = msec / 1000; @@ -435,7 +432,7 @@ static void fgSleepForEvents( void ) /* * Returns GLUT modifier mask for an XEvent. */ -int fgGetXModifiers(XEvent *event) +int fgGetXModifiers( XEvent *event ) { int ret = 0; @@ -656,10 +653,14 @@ void FGAPIENTRY glutMainLoopEvent( void ) event.xmotion.y ); } } - else if( window->Callbacks.Passive ) + else { - fgSetWindow ( window ) ; - window->Callbacks.Passive( event.xmotion.x, event.xmotion.y ); + if( window->Callbacks.Passive ) + { + fgSetWindow( window ); + window->Callbacks.Passive( event.xmotion.x, + event.xmotion.y ); + } } } break; @@ -793,43 +794,40 @@ void FGAPIENTRY glutMainLoopEvent( void ) if( window->Callbacks.Mouse ) fgStructure.Window->Callbacks.Mouse( button, - event.type == ButtonPress ? GLUT_DOWN : GLUT_UP, + pressed ? GLUT_DOWN : GLUT_UP, event.xbutton.x, event.xbutton.y ); } else { - if( ( button >= 4 ) && window->Callbacks.MouseWheel ) - { - /* - * Map 4 and 5 to wheel zero; EVEN to +1, ODD to -1 - * " 6 and 7 " " one; ... - * - * XXX This *should* be behind some variables/macros, - * XXX since the order and numbering isn't certain - * XXX See XFree86 configuration docs (even back in the - * XXX 3.x days, and especially with 4.x). - */ - int wheel_number = (button - 4) / 2; - int direction = (button & 1)*2 - 1; - - if( ButtonPress ) - fgStructure.Window->Callbacks.MouseWheel( - wheel_number, - direction, - event.xbutton.x, - event.xbutton.y - ); - } + /* + * Map 4 and 5 to wheel zero; EVEN to +1, ODD to -1 + * " 6 and 7 " " one; ... + * + * XXX This *should* be behind some variables/macros, + * XXX since the order and numbering isn't certain + * XXX See XFree86 configuration docs (even back in the + * XXX 3.x days, and especially with 4.x). + */ + int wheel_number = (button - 4) / 2; + int direction = (button & 1)*2 - 1; + + if( pressed ) + fgStructure.Window->Callbacks.MouseWheel( + wheel_number, + direction, + event.xbutton.x, + event.xbutton.y + ); } /* * Trash the modifiers state */ fgStructure.Window->State.Modifiers = 0xffffffff; - break; } + break; case KeyRelease: case KeyPress: @@ -1021,7 +1019,7 @@ void FGAPIENTRY glutMainLoop( void ) } { - fgExecutionState execState = fgState.ActionOnWindowClose; + fgExecutionState execState = fgState.ExecState; /* * When this loop terminates, destroy the display, state and structure @@ -1086,24 +1084,24 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, window->Window.Device = GetDC( hWnd ); if( fgState.BuildingAMenu ) { - unsigned int current_DisplayMode = fgState.DisplayMode; - fgState.DisplayMode = GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH; - fgSetupPixelFormat( window, FALSE, PFD_MAIN_PLANE ); - fgState.DisplayMode = current_DisplayMode; - - if( fgStructure.MenuContext ) - wglMakeCurrent( window->Window.Device, - fgStructure.MenuContext->Context ) ; - else - { - fgStructure.MenuContext = - (SFG_MenuContext *)malloc( sizeof(SFG_MenuContext) ); - fgStructure.MenuContext->Context = - wglCreateContext( window->Window.Device ); - } - - /* window->Window.Context = wglGetCurrentContext () ; */ - window->Window.Context = wglCreateContext( window->Window.Device ); + unsigned int current_DisplayMode = fgState.DisplayMode; + fgState.DisplayMode = GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH; + fgSetupPixelFormat( window, FALSE, PFD_MAIN_PLANE ); + fgState.DisplayMode = current_DisplayMode; + + if( fgStructure.MenuContext ) + wglMakeCurrent( window->Window.Device, + fgStructure.MenuContext->Context ) ; + else + { + fgStructure.MenuContext = + (SFG_MenuContext *)malloc( sizeof(SFG_MenuContext) ); + fgStructure.MenuContext->Context = + wglCreateContext( window->Window.Device ); + } + + /* window->Window.Context = wglGetCurrentContext () ; */ + window->Window.Context = wglCreateContext( window->Window.Device ); } else { @@ -1143,7 +1141,6 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, /* glutSetCursor( fgStructure.Window->State.Cursor ); */ printf("WM_ACTIVATE: glutSetCursor( %p, %d)\n", window, window->State.Cursor ); - glutSetCursor( window->State.Cursor ); } @@ -1239,7 +1236,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, * Put on a linked list of windows to be removed after all the * callbacks have returned */ - fgAddToWindowDestroyList( window, FALSE ) ; + fgAddToWindowDestroyList( window, FALSE ); DestroyWindow( hWnd ); break; @@ -1247,7 +1244,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, /* * The window already got destroyed, so don't bother with it. */ - return( 0 ); + return 0; case WM_MOUSEMOVE: { @@ -1256,13 +1253,8 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, if ( window->ActiveMenu ) { - window->State.Redisplay = TRUE ; - - /* - * Since the window is a menu, make the parent window current - */ - fgSetWindow ( window->ActiveMenu->ParentWindow ) ; - + window->State.Redisplay = TRUE; + fgSetWindow ( window->ActiveMenu->ParentWindow ); break; } @@ -1390,7 +1382,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, break; } - if ( ( window->Menu[ button ] != NULL ) && ( pressed == TRUE ) ) + if ( ( window->Menu[ button ] ) && ( pressed == TRUE ) ) { window->State.Redisplay = TRUE; fgSetWindow( window ); @@ -1461,13 +1453,16 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, * XXX buttons. Sorry. */ int button = wheel_number*2 + 4; - button += (1 + direction)/2; + if( direction > 0 ) + ++button; window->Callbacks.Mouse( button, GLUT_DOWN, window->State.MouseX, - window->State.MouseY ) ; + window->State.MouseY + ); window->Callbacks.Mouse( button, GLUT_UP, window->State.MouseX, - window->State.MouseY ) ; + window->State.MouseY + ); } fgStructure.Window->State.Modifiers = 0xffffffff; @@ -1551,7 +1546,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, case WM_KEYUP: { int keypress = -1; - POINT mouse_pos ; + POINT mouse_pos; /* * Remember the current modifiers state. This is done here in order @@ -1660,7 +1655,6 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, if( window->Callbacks.Display ) { fgSetWindow( window ); - window->Callbacks.Display( ); } @@ -1714,7 +1708,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, break; } - return lRet ; + return lRet; } #endif