projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixing the window position for asynchronous X11 implementations (e-mail by Jocelyn...
[freeglut]
/
src
/
freeglut_init.c
diff --git
a/src/freeglut_init.c
b/src/freeglut_init.c
index
a8a59d4
..
054285e
100644
(file)
--- a/
src/freeglut_init.c
+++ b/
src/freeglut_init.c
@@
-65,11
+65,7
@@
SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */
0, /* FPSInterval */
0, /* SwapCount */
0, /* SwapTime */
0, /* FPSInterval */
0, /* SwapCount */
0, /* SwapTime */
-#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE
- { 0, GL_FALSE }, /* Time */
-#else
- { { 0, 0 }, GL_FALSE },
-#endif
+ 0, /* Time */
{ NULL, NULL }, /* Timers */
{ NULL, NULL }, /* FreeTimers */
NULL, /* IdleCallback */
{ NULL, NULL }, /* Timers */
{ NULL, NULL }, /* FreeTimers */
NULL, /* IdleCallback */
@@
-83,7
+79,9
@@
SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */
GLUT_EXEC_STATE_INIT, /* ExecState */
NULL, /* ProgramName */
GL_FALSE, /* JoysticksInitialised */
GLUT_EXEC_STATE_INIT, /* ExecState */
NULL, /* ProgramName */
GL_FALSE, /* JoysticksInitialised */
- GL_FALSE /* InputDevsInitialised */
+ GL_FALSE, /* InputDevsInitialised */
+ 0, /* AuxiliaryBufferNumber */
+ 0 /* SampleNumber */
};
};
@@
-94,7
+92,7
@@
SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */
*/
static void fghInitialize( const char* displayName )
{
*/
static void fghInitialize( const char* displayName )
{
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
fgDisplay.Display = XOpenDisplay( displayName );
if( fgDisplay.Display == NULL )
fgDisplay.Display = XOpenDisplay( displayName );
if( fgDisplay.Display == NULL )
@@
-137,7
+135,7
@@
static void fghInitialize( const char* displayName )
FALSE
);
FALSE
);
-#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE
+#elif TARGET_HOST_MS_WINDOWS
WNDCLASS wc;
ATOM atom;
WNDCLASS wc;
ATOM atom;
@@
-165,12
+163,12
@@
static void fghInitialize( const char* displayName )
wc.hInstance = fgDisplay.Instance;
wc.hIcon = LoadIcon( fgDisplay.Instance, _T("GLUT_ICON") );
wc.hInstance = fgDisplay.Instance;
wc.hIcon = LoadIcon( fgDisplay.Instance, _T("GLUT_ICON") );
-#if TARGET_HOST_WIN32
+#if defined(_WIN32_WCE)
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+#else
wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
if (!wc.hIcon)
wc.hIcon = LoadIcon( NULL, IDI_WINLOGO );
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 );
#endif
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
@@
-225,6
+223,10
@@
void fgDeinitialize( void )
/* If there was a menu created, destroy the rendering context */
if( fgStructure.MenuContext )
{
/* If there was a menu created, destroy the rendering context */
if( fgStructure.MenuContext )
{
+#if TARGET_HOST_POSIX_X11
+ /* Note that the MVisualInfo is not owned by the MenuContext! */
+ glXDestroyContext( fgDisplay.Display, fgStructure.MenuContext->MContext );
+#endif
free( fgStructure.MenuContext );
fgStructure.MenuContext = NULL;
}
free( fgStructure.MenuContext );
fgStructure.MenuContext = NULL;
}
@@
-243,13
+245,13
@@
void fgDeinitialize( void )
free( timer );
}
free( timer );
}
-#if !TARGET_HOST_WINCE
+#if !defined(_WIN32_WCE)
if ( fgState.JoysticksInitialised )
fgJoystickClose( );
if ( fgState.InputDevsInitialised )
fgInputDeviceClose( );
if ( fgState.JoysticksInitialised )
fgJoystickClose( );
if ( fgState.InputDevsInitialised )
fgInputDeviceClose( );
-#endif /* !TARGET_HOST_WINCE */
+#endif /* !defined(_WIN32_WCE) */
fgState.JoysticksInitialised = GL_FALSE;
fgState.InputDevsInitialised = GL_FALSE;
fgState.JoysticksInitialised = GL_FALSE;
fgState.InputDevsInitialised = GL_FALSE;
@@
-281,8
+283,6
@@
void fgDeinitialize( void )
fgState.GameModeDepth = 16;
fgState.GameModeRefresh = 72;
fgState.GameModeDepth = 16;
fgState.GameModeRefresh = 72;
- fgState.Time.Set = GL_FALSE;
-
fgListInit( &fgState.Timers );
fgListInit( &fgState.FreeTimers );
fgListInit( &fgState.Timers );
fgListInit( &fgState.FreeTimers );
@@
-300,7
+300,7
@@
void fgDeinitialize( void )
fgState.ProgramName = NULL;
}
fgState.ProgramName = NULL;
}
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
/*
* Make sure all X-client data we have created will be destroyed on
/*
* Make sure all X-client data we have created will be destroyed on
@@
-314,7
+314,7
@@
void fgDeinitialize( void )
*/
XCloseDisplay( fgDisplay.Display );
*/
XCloseDisplay( fgDisplay.Display );
-#elif TARGET_HOST_WIN32 || TARGET_HOST_WINCE
+#elif TARGET_HOST_MS_WINDOWS
/* Reset the timer granularity */
timeEndPeriod ( 1 );
/* Reset the timer granularity */
timeEndPeriod ( 1 );
@@
-328,7
+328,7
@@
void fgDeinitialize( void )
* Everything inside the following #ifndef is copied from the X sources.
*/
* Everything inside the following #ifndef is copied from the X sources.
*/
-#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE
+#if TARGET_HOST_MS_WINDOWS
/*
/*
@@
-520,10
+520,11
@@
void FGAPIENTRY glutInit( int* pargc, char** argv )
fgCreateStructure( );
fgCreateStructure( );
- fgElapsedTime( );
+ /* Get start time */
+ fgState.Time = fgSystemTime();
/* check if GLUT_FPS env var is set */
/* check if GLUT_FPS env var is set */
-#if !TARGET_HOST_WINCE
+#ifndef _WIN32_WCE
{
const char *fps = getenv( "GLUT_FPS" );
if( fps )
{
const char *fps = getenv( "GLUT_FPS" );
if( fps )
@@
-615,7
+616,7
@@
void FGAPIENTRY glutInit( int* pargc, char** argv )
argv[ i ] = argv[ j ];
}
argv[ i ] = argv[ j ];
}
-#endif /* TARGET_HOST_WINCE */
+#endif /* _WIN32_WCE */
/*
* Have the display created now. If there wasn't a "-display"
/*
* Have the display created now. If there wasn't a "-display"
@@
-654,6
+655,14
@@
void FGAPIENTRY glutInit( int* pargc, char** argv )
}
/*
}
/*
+ * Undoes all the "glutInit" stuff
+ */
+void FGAPIENTRY glutExit ( void )
+{
+ fgDeinitialize ();
+}
+
+/*
* Sets the default initial window position for new windows
*/
void FGAPIENTRY glutInitWindowPosition( int x, int y )
* Sets the default initial window position for new windows
*/
void FGAPIENTRY glutInitWindowPosition( int x, int y )
@@
-713,7
+722,7
@@
void FGAPIENTRY glutInitDisplayString( const char* displayMode )
* delimited by blanks or tabs.
*/
char *token ;
* delimited by blanks or tabs.
*/
char *token ;
- int len = strlen ( displayMode );
+ size_t len = strlen ( displayMode );
char *buffer = (char *)malloc ( (len+1) * sizeof(char) );
memcpy ( buffer, displayMode, len );
buffer[len] = '\0';
char *buffer = (char *)malloc ( (len+1) * sizeof(char) );
memcpy ( buffer, displayMode, len );
buffer[len] = '\0';
@@
-723,9
+732,16
@@
void FGAPIENTRY glutInitDisplayString( const char* displayMode )
{
/* Process this token */
int i ;
{
/* Process this token */
int i ;
+
+ /* Temporary fix: Ignore any length specifications and at least
+ * process the basic token
+ * TODO: Fix this permanently
+ */
+ size_t cleanlength = strcspn ( token, "=<>~!" );
+
for ( i = 0; i < NUM_TOKENS; i++ )
{
for ( i = 0; i < NUM_TOKENS; i++ )
{
- if ( strcmp ( token, Tokens[i] ) == 0 ) break ;
+ if ( strncmp ( token, Tokens[i], cleanlength ) == 0 ) break ;
}
switch ( i )
}
switch ( i )
@@
-822,64
+838,64
@@
void FGAPIENTRY glutInitDisplayString( const char* displayMode )
case 20 : /* "win32pdf": (incorrect spelling but was there before */
case 21 : /* "win32pfd": matches the Win32 Pixel Format Descriptor by
number */
case 20 : /* "win32pdf": (incorrect spelling but was there before */
case 21 : /* "win32pfd": matches the Win32 Pixel Format Descriptor by
number */
-#if TARGET_HOST_WIN32
+#if TARGET_HOST_MS_WINDOWS
#endif
break ;
case 22 : /* "xvisual": matches the X visual ID by number */
#endif
break ;
case 22 : /* "xvisual": matches the X visual ID by number */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 23 : /* "xstaticgray": */
case 29 : /* "xstaticgrey": boolean indicating if the frame buffer
configuration's X visual is of type StaticGray */
#endif
break ;
case 23 : /* "xstaticgray": */
case 29 : /* "xstaticgrey": boolean indicating if the frame buffer
configuration's X visual is of type StaticGray */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 24 : /* "xgrayscale": */
case 30 : /* "xgreyscale": boolean indicating if the frame buffer
configuration's X visual is of type GrayScale */
#endif
break ;
case 24 : /* "xgrayscale": */
case 30 : /* "xgreyscale": boolean indicating if the frame buffer
configuration's X visual is of type GrayScale */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 25 : /* "xstaticcolor": */
case 31 : /* "xstaticcolour": boolean indicating if the frame buffer
configuration's X visual is of type StaticColor */
#endif
break ;
case 25 : /* "xstaticcolor": */
case 31 : /* "xstaticcolour": boolean indicating if the frame buffer
configuration's X visual is of type StaticColor */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 26 : /* "xpseudocolor": */
case 32 : /* "xpseudocolour": boolean indicating if the frame buffer
configuration's X visual is of type PseudoColor */
#endif
break ;
case 26 : /* "xpseudocolor": */
case 32 : /* "xpseudocolour": boolean indicating if the frame buffer
configuration's X visual is of type PseudoColor */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 27 : /* "xtruecolor": */
case 33 : /* "xtruecolour": boolean indicating if the frame buffer
configuration's X visual is of type TrueColor */
#endif
break ;
case 27 : /* "xtruecolor": */
case 33 : /* "xtruecolour": boolean indicating if the frame buffer
configuration's X visual is of type TrueColor */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 28 : /* "xdirectcolor": */
case 34 : /* "xdirectcolour": boolean indicating if the frame buffer
configuration's X visual is of type DirectColor */
#endif
break ;
case 28 : /* "xdirectcolor": */
case 34 : /* "xdirectcolour": boolean indicating if the frame buffer
configuration's X visual is of type DirectColor */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 35 : /* "borderless": windows should not have borders */
#endif
break ;
case 35 : /* "borderless": windows should not have borders */
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
#endif
break ;
case 36 : /* "aux": some number of aux buffers */
#endif
break ;
case 36 : /* "aux": some number of aux buffers */
- glut_state_flag |= GLUT_AUX1;
+ glut_state_flag |= GLUT_AUX;
break ;
case 37 : /* Unrecognized */
break ;
case 37 : /* Unrecognized */