X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_init.c;h=ec5b6195622a9edf019e0c1ab563246794820984;hb=69f96533fcedaf91c2b6c53da6e1c20fb145b425;hp=8fce87f8c987176676d15da87f3a71c292c7e060;hpb=4f58e4f75c3d57437da215f4119e9991b77272e0;p=freeglut diff --git a/src/freeglut_init.c b/src/freeglut_init.c index 8fce87f..ec5b619 100644 --- a/src/freeglut_init.c +++ b/src/freeglut_init.c @@ -59,8 +59,7 @@ SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */ { 300, 300, GL_TRUE }, /* Size */ GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH, /* DisplayMode */ GL_FALSE, /* Initialised */ - GL_FALSE, /* ForceDirectContext */ - GL_TRUE, /* TryDirectContext */ + GLUT_TRY_DIRECT_CONTEXT, /* DirectContext */ GL_FALSE, /* ForceIconic */ GL_FALSE, /* UseCurrentContext */ GL_FALSE, /* GLDebugSwitch */ @@ -70,7 +69,7 @@ SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */ 0, /* FPSInterval */ 0, /* SwapCount */ 0, /* SwapTime */ -#if TARGET_HOST_WIN32 +#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE { 0, GL_FALSE }, /* Time */ #else { { 0, 0 }, GL_FALSE }, @@ -142,7 +141,7 @@ void fgInitialize( const char* displayName ) FALSE ); -#elif TARGET_HOST_WIN32 +#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE WNDCLASS wc; ATOM atom; @@ -152,7 +151,8 @@ void fgInitialize( const char* displayName ) */ fgDisplay.Instance = GetModuleHandle( NULL ); - atom = GetClassInfo( fgDisplay.Instance, "FREEGLUT", &wc ); + atom = GetClassInfo( fgDisplay.Instance, _T("FREEGLUT"), &wc ); + if( atom == 0 ) { ZeroMemory( &wc, sizeof(WNDCLASS) ); @@ -165,19 +165,24 @@ void fgInitialize( const char* displayName ) * XXX Old code had "| CS_DBCLCKS" commented out. Plans for the * XXX future? Dead-end idea? */ - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = fgWindowProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = fgDisplay.Instance; - wc.hIcon = LoadIcon( fgDisplay.Instance, "GLUT_ICON" ); + wc.hIcon = LoadIcon( fgDisplay.Instance, _T("GLUT_ICON") ); + +#if TARGET_HOST_WIN32 + wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; if (!wc.hIcon) wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); +#else /* TARGET_HOST_WINCE */ + wc.style = CS_HREDRAW | CS_VREDRAW; +#endif wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; - wc.lpszClassName = "FREEGLUT"; + wc.lpszClassName = _T("FREEGLUT"); /* * Register the window class @@ -204,8 +209,10 @@ void fgInitialize( const char* displayName ) #endif +#if !TARGET_HOST_WINCE fgJoystickInit( 0 ); fgJoystickInit( 1 ); +#endif /* !TARGET_HOST_WINCE */ fgState.Initialised = GL_TRUE; } @@ -249,7 +256,9 @@ void fgDeinitialize( void ) free( timer ); } +#if !TARGET_HOST_WINCE fgJoystickClose( ); +#endif /* !TARGET_HOST_WINCE */ fgState.Initialised = GL_FALSE; @@ -263,8 +272,7 @@ void fgDeinitialize( void ) fgState.DisplayMode = GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH; - fgState.ForceDirectContext = GL_FALSE; - fgState.TryDirectContext = GL_TRUE; + fgState.DirectContext = GLUT_TRY_DIRECT_CONTEXT; fgState.ForceIconic = GL_FALSE; fgState.UseCurrentContext = GL_FALSE; fgState.GLDebugSwitch = GL_FALSE; @@ -321,7 +329,7 @@ void fgDeinitialize( void ) * Everything inside the following #ifndef is copied from the X sources. */ -#if TARGET_HOST_WIN32 +#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE /* @@ -516,6 +524,7 @@ void FGAPIENTRY glutInit( int* pargc, char** argv ) fgElapsedTime( ); /* check if GLUT_FPS env var is set */ +#if !TARGET_HOST_WINCE { const char *fps = getenv( "GLUT_FPS" ); if( fps ) @@ -559,21 +568,21 @@ void FGAPIENTRY glutInit( int* pargc, char** argv ) } else if( strcmp( argv[ i ], "-direct" ) == 0) { - if( ! fgState.TryDirectContext ) + if( fgState.DirectContext == GLUT_FORCE_INDIRECT_CONTEXT ) fgError( "parameters ambiguity, -direct and -indirect " "cannot be both specified" ); - fgState.ForceDirectContext = GL_TRUE; + fgState.DirectContext = GLUT_FORCE_DIRECT_CONTEXT; argv[ i ] = NULL; ( *pargc )--; } else if( strcmp( argv[ i ], "-indirect" ) == 0 ) { - if( fgState.ForceDirectContext ) + if( fgState.DirectContext == GLUT_FORCE_DIRECT_CONTEXT ) fgError( "parameters ambiguity, -direct and -indirect " "cannot be both specified" ); - fgState.TryDirectContext = GL_FALSE; + fgState.DirectContext = GLUT_FORCE_INDIRECT_CONTEXT; argv[ i ] = NULL; (*pargc)--; } @@ -612,6 +621,8 @@ void FGAPIENTRY glutInit( int* pargc, char** argv ) } } +#endif /* TARGET_HOST_WINCE */ + /* * Have the display created now. If there wasn't a "-display" * in the program arguments, we will use the DISPLAY environment