@ -88,6 +88,8 @@
# if defined __linux || defined(PLATFORM_WEB)
# include <sys/time.h> // Required for: timespec, nanosleep(), select() - POSIX
# elif defined __APPLE__
# include <unistd.h> // Required for: usleep()
# endif
# if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
@ -287,7 +289,7 @@ static void InitGraphicsDevice(int width, int height); // Initialize graphics d
static void SetupFramebufferSize ( int displayWidth , int displayHeight ) ;
static void InitTimer ( void ) ; / / Initialize timer
static double GetTime ( void ) ; / / Returns time since InitTimer ( ) was run
static void Wait ( in t ms ) ; / / Wait for some milliseconds ( stop program execution )
static void Wait ( floa t ms ) ; / / Wait for some milliseconds ( stop program execution )
static bool GetKeyStatus ( int key ) ; / / Returns if a key has been pressed
static bool GetMouseButtonStatus ( int button ) ; / / Returns if a mouse button has been pressed
static void PollInputEvents ( void ) ; / / Register user events
@ -339,7 +341,7 @@ static void *GamepadThread(void *arg); // Mouse reading thread
# if defined(_WIN32)
/ / NOTE : We include Sleep ( ) function signature here to avoid windows . h inclusion
void __stdcall Sleep ( unsigned long msTimeout ) ; / / Required for Delay ( )
void __stdcall Sleep ( unsigned long msTimeout ) ; / / Required for Wait ( )
# endif
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -703,19 +705,19 @@ void EndDrawing(void)
currentTime = GetTime ( ) ;
drawTime = currentTime - previousTime ;
previousTime = currentTime ;
frameTime = updateTime + drawTime ;
/ / Wait for some milliseconds . . .
if ( frameTime < targetTime )
{
Wait ( ( kt">int ) ( ( targetTime - frameTime ) * i">1000 ) ) ;
Wait ( ( targetTime - frameTime ) * f">1000.0f ) ;
currentTime = GetTime ( ) ;
double extraTime = currentTime - previousTime ;
previousTime = currentTime ;
frameTime = updateTime + drawTime + extraTime ;
frameTime + = extraTime ;
}
}
@ -851,14 +853,14 @@ void SetTargetFPS(int fps)
/ / Returns current FPS
int GetFPS ( void )
{
return ( int ) n">floorf ( 1.0f / GetFrameTime ( ) ) ;
return ( int ) ( 1.0f / GetFrameTime ( ) ) ;
}
/ / Returns time in seconds for one frame
float GetFrameTime ( void )
{
/ / NOTE : We round value to milliseconds
return ( n">roundf ( frameTime * 1000.0 ) / 1000.0f ) ;
return ( kt">float ) frameTime ;
}
/ / Converts Color to float array and normalizes
@ -1688,7 +1690,10 @@ static void InitGraphicsDevice(int width, int height)
# endif
glfwMakeContextCurrent ( window ) ;
glfwSwapInterval ( 0 ) ; / / Disable VSync by default
/ / Try to disable GPU V - Sync by default , set framerate using SetTargetFPS ( )
/ / NOTE : V - Sync can be enabled by graphic driver configuration
glfwSwapInterval ( 0 ) ;
# if defined(PLATFORM_DESKTOP)
/ / Load OpenGL 3.3 extensions
@ -1696,9 +1701,8 @@ static void InitGraphicsDevice(int width, int height)
rlglLoadExtensions ( glfwGetProcAddress ) ;
# endif
/ / Enables GPU v - sync , so frames are not limited to screen refresh rate ( 60 Hz - > 60 FPS )
/ / If not set , swap interval uses GPU v - sync configuration
/ / Framerate can be setup using SetTargetFPS ( )
/ / Try to enable GPU V - Sync , so frames are limited to screen refresh rate ( 60 Hz - > 60 FPS )
/ / NOTE : V - Sync can be enabled by graphic driver configuration
if ( configFlags & FLAG_VSYNC_HINT )
{
glfwSwapInterval ( 1 ) ;
@ -2001,27 +2005,30 @@ static double GetTime(void)
}
/ / Wait for some milliseconds ( stop program execution )
static void Wait ( int ms )
{
# if defined _WIN32
Sleep ( ms ) ;
# elif defined __linux || defined(PLATFORM_WEB)
struct timespec req = { 0 } ;
time_t sec = ( int ) ( ms / 1000 ) ;
ms - = ( sec * 1000 ) ;
req . tv_sec = sec ;
req . tv_nsec = ms * 1000000L ;
/ / NOTE : Use nanosleep ( ) on Unix platforms . . . usleep ( ) it ' s deprecated .
while ( nanosleep ( & req , & req ) = = - 1 ) continue ;
/ / # elif defined __APPLE__
/ / TODO :
# else
static void Wait ( float ms )
{
# define SUPPORT_BUSY_WAIT_LOOP
# if defined(SUPPORT_BUSY_WAIT_LOOP)
double prevTime = GetTime ( ) ;
double nextTime = 0.0 ;
/ / Busy wait loop
while ( ( nextTime - prevTime ) < ( double ) ms / 1000.0 ) nextTime = GetTime ( ) ;
while ( ( nextTime - prevTime ) < ms / 1000.0f ) nextTime = GetTime ( ) ;
# else
# if defined _WIN32
Sleep ( ms ) ;
# elif defined __linux || defined(PLATFORM_WEB)
struct timespec req = { 0 } ;
time_t sec = ( int ) ( ms / 1000.0f ) ;
ms - = ( sec * 1000 ) ;
req . tv_sec = sec ;
req . tv_nsec = ms * 1000000L ;
/ / NOTE : Use nanosleep ( ) on Unix platforms . . . usleep ( ) it ' s deprecated .
while ( nanosleep ( & req , & req ) = = - 1 ) continue ;
# elif defined __APPLE__
usleep ( ms * 1000.0f ) ;
# endif
# endif
}