mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 15:21:35 +00:00
* Change win32 client Sys_Sleep so it ONLY sleeps since before it was waking on
more or less any input event; fine for the server, not so much use for the client * In the main loop, don't bother sleeping if it's going to be less than 10ms as the methods we're using to sleep at the moment aren't very precise * Add Sys_PlatformInit for platform specific initialisation * In win32 Sys_PlatformInit force selection of the DirectX SDL backend in order to get better fullscreen mouse input (in conjunction with a patched SDL DLL http://bugzilla.libsdl.org/show_bug.cgi?id=265)
This commit is contained in:
parent
d13269c5bb
commit
00e790ce00
5 changed files with 47 additions and 2 deletions
|
@ -2864,7 +2864,14 @@ void Com_Frame( void ) {
|
|||
|
||||
msec = minMsec;
|
||||
do {
|
||||
Sys_Sleep( minMsec - msec );
|
||||
int timeRemaining = minMsec - msec;
|
||||
|
||||
// The existing Sys_Sleep implementations aren't really
|
||||
// precise enough to be of use beyond 100fps
|
||||
// FIXME: implement a more precise sleep (RDTSC or something)
|
||||
if( timeRemaining >= 10 )
|
||||
Sys_Sleep( timeRemaining );
|
||||
|
||||
com_frameTime = Com_EventLoop();
|
||||
if ( lastTime > com_frameTime ) {
|
||||
lastTime = com_frameTime; // possible on first frame
|
||||
|
|
|
@ -47,6 +47,7 @@ unsigned int CON_LogRead( char *out, unsigned int outSize );
|
|||
char *Sys_StripAppBundle( char *pwd );
|
||||
#endif
|
||||
|
||||
void Sys_PlatformInit( void );
|
||||
void Sys_SigHandler( int signal );
|
||||
void Sys_ErrorDialog( const char *error );
|
||||
void Sys_AnsiColorPrint( const char *msg );
|
||||
|
|
|
@ -533,6 +533,8 @@ int main( int argc, char **argv )
|
|||
}
|
||||
#endif
|
||||
|
||||
Sys_PlatformInit( );
|
||||
|
||||
Sys_ParseArgs( argc, argv );
|
||||
Sys_SetBinaryPath( Sys_Dirname( argv[ 0 ] ) );
|
||||
Sys_SetDefaultInstallPath( DEFAULT_BASEDIR );
|
||||
|
|
|
@ -511,3 +511,15 @@ void Sys_ErrorDialog( const char *error )
|
|||
|
||||
FS_FCloseFile( f );
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
Sys_PlatformInit
|
||||
|
||||
Unix specific initialisation
|
||||
==============
|
||||
*/
|
||||
void Sys_PlatformInit( void )
|
||||
{
|
||||
// NOP
|
||||
}
|
||||
|
|
|
@ -514,7 +514,7 @@ void Sys_FreeFileList( char **list )
|
|||
==============
|
||||
Sys_Sleep
|
||||
|
||||
Block execution for msec or until input is recieved.
|
||||
Block execution for msec or until input is received.
|
||||
==============
|
||||
*/
|
||||
void Sys_Sleep( int msec )
|
||||
|
@ -522,10 +522,18 @@ void Sys_Sleep( int msec )
|
|||
if( msec == 0 )
|
||||
return;
|
||||
|
||||
#ifdef DEDICATED
|
||||
if( msec < 0 )
|
||||
WaitForSingleObject( GetStdHandle( STD_INPUT_HANDLE ), INFINITE );
|
||||
else
|
||||
WaitForSingleObject( GetStdHandle( STD_INPUT_HANDLE ), msec );
|
||||
#else
|
||||
// Client Sys_Sleep doesn't support waiting on stdin
|
||||
if( msec < 0 )
|
||||
return;
|
||||
|
||||
Sleep( msec );
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -568,3 +576,18 @@ void Sys_ErrorDialog( const char *error )
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
Sys_PlatformInit
|
||||
|
||||
Windows specific initialisation
|
||||
==============
|
||||
*/
|
||||
void Sys_PlatformInit( void )
|
||||
{
|
||||
#ifndef DEDICATED
|
||||
// Force the DirectX SDL backend to be used
|
||||
_putenv( "SDL_VIDEODRIVER=directx" );
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue