joystick updates from John Fay
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@513 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
5bd18d1bcd
commit
413bd1e861
@ -171,6 +171,13 @@ void FGAPIENTRY glutJoystickFunc( void (* callback)
|
|||||||
( unsigned int, int, int, int ),
|
( unsigned int, int, int, int ),
|
||||||
int pollInterval )
|
int pollInterval )
|
||||||
{
|
{
|
||||||
|
if( !fgState.JoysticksInitialised )
|
||||||
|
{
|
||||||
|
fgJoystickInit( 0 );
|
||||||
|
fgJoystickInit( 1 );
|
||||||
|
fgState.JoysticksInitialised = GL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
SET_CALLBACK( Joystick );
|
SET_CALLBACK( Joystick );
|
||||||
fgStructure.Window->State.JoystickPollRate = pollInterval;
|
fgStructure.Window->State.JoystickPollRate = pollInterval;
|
||||||
|
|
||||||
|
@ -85,7 +85,8 @@ SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */
|
|||||||
72, /* GameModeRefresh */
|
72, /* GameModeRefresh */
|
||||||
GLUT_ACTION_EXIT, /* ActionOnWindowClose */
|
GLUT_ACTION_EXIT, /* ActionOnWindowClose */
|
||||||
GLUT_EXEC_STATE_INIT, /* ExecState */
|
GLUT_EXEC_STATE_INIT, /* ExecState */
|
||||||
NULL /* ProgramName */
|
NULL, /* ProgramName */
|
||||||
|
GL_FALSE /* JoysticksInitialised */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -201,11 +202,6 @@ void fgInitialize( const char* displayName )
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !TARGET_HOST_WINCE
|
|
||||||
fgJoystickInit( 0 );
|
|
||||||
fgJoystickInit( 1 );
|
|
||||||
#endif /* !TARGET_HOST_WINCE */
|
|
||||||
|
|
||||||
fgState.Initialised = GL_TRUE;
|
fgState.Initialised = GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,8 +243,10 @@ void fgDeinitialize( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if !TARGET_HOST_WINCE
|
#if !TARGET_HOST_WINCE
|
||||||
fgJoystickClose( );
|
if ( fgState.JoysticksInitialised )
|
||||||
|
fgJoystickClose( );
|
||||||
#endif /* !TARGET_HOST_WINCE */
|
#endif /* !TARGET_HOST_WINCE */
|
||||||
|
fgState.JoysticksInitialised = GL_FALSE;
|
||||||
|
|
||||||
fgState.Initialised = GL_FALSE;
|
fgState.Initialised = GL_FALSE;
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ struct tagSFG_XYUse
|
|||||||
typedef struct tagSFG_Time SFG_Time;
|
typedef struct tagSFG_Time SFG_Time;
|
||||||
struct tagSFG_Time
|
struct tagSFG_Time
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE
|
||||||
DWORD Value;
|
DWORD Value;
|
||||||
#else
|
#else
|
||||||
struct timeval Value;
|
struct timeval Value;
|
||||||
@ -229,6 +229,7 @@ struct tagSFG_State
|
|||||||
|
|
||||||
fgExecutionState ExecState; /* Used for GLUT termination */
|
fgExecutionState ExecState; /* Used for GLUT termination */
|
||||||
char *ProgramName; /* Name of the invoking program */
|
char *ProgramName; /* Name of the invoking program */
|
||||||
|
GLboolean JoysticksInitialised; /* Only initialize if application calls for them */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The structure used by display initialization in freeglut_init.c */
|
/* The structure used by display initialization in freeglut_init.c */
|
||||||
|
@ -103,7 +103,8 @@ static void fghReshapeWindowByHandle ( SFG_WindowHandleType handle,
|
|||||||
|
|
||||||
#if !TARGET_HOST_WINCE
|
#if !TARGET_HOST_WINCE
|
||||||
{
|
{
|
||||||
RECT rect;
|
RECT winRect;
|
||||||
|
int x, y, w, h;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For windowed mode, get the current position of the
|
* For windowed mode, get the current position of the
|
||||||
@ -111,24 +112,29 @@ static void fghReshapeWindowByHandle ( SFG_WindowHandleType handle,
|
|||||||
* decorations into account.
|
* decorations into account.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GetWindowRect( window->Window.Handle, &rect );
|
/* "GetWindowRect" returns the pixel coordinates of the outside of the window */
|
||||||
rect.right = rect.left + width;
|
GetWindowRect( window->Window.Handle, &winRect );
|
||||||
rect.bottom = rect.top + height;
|
x = winRect.left;
|
||||||
|
y = winRect.top;
|
||||||
|
w = width;
|
||||||
|
h = height;
|
||||||
|
|
||||||
if ( window->Parent == NULL )
|
if ( window->Parent == NULL )
|
||||||
{
|
{
|
||||||
if ( ! window->IsMenu && !window->State.IsGameMode )
|
if ( ! window->IsMenu && !window->State.IsGameMode )
|
||||||
{
|
{
|
||||||
rect.right += GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
|
w += GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
|
||||||
rect.bottom += GetSystemMetrics( SM_CYSIZEFRAME ) * 2 +
|
h += GetSystemMetrics( SM_CYSIZEFRAME ) * 2 +
|
||||||
GetSystemMetrics( SM_CYCAPTION );
|
GetSystemMetrics( SM_CYCAPTION );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetWindowRect( window->Parent->Window.Handle, &rect );
|
RECT parentRect;
|
||||||
AdjustWindowRect ( &rect, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS |
|
GetWindowRect( window->Parent->Window.Handle, &parentRect );
|
||||||
WS_CLIPCHILDREN, FALSE );
|
x -= parentRect.left + GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
|
||||||
|
y -= parentRect.top + GetSystemMetrics( SM_CYSIZEFRAME ) * 2 +
|
||||||
|
GetSystemMetrics( SM_CYCAPTION );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -140,10 +146,7 @@ static void fghReshapeWindowByHandle ( SFG_WindowHandleType handle,
|
|||||||
|
|
||||||
SetWindowPos( window->Window.Handle,
|
SetWindowPos( window->Window.Handle,
|
||||||
HWND_TOP,
|
HWND_TOP,
|
||||||
rect.left,
|
x, y, w, h,
|
||||||
rect.top,
|
|
||||||
rect.right - rect.left,
|
|
||||||
rect.bottom - rect.top,
|
|
||||||
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING |
|
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING |
|
||||||
SWP_NOZORDER
|
SWP_NOZORDER
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user