about summary refs log tree commit diff
path: root/src/engine/external/glfw/lib/win32/win32_time.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-08-22 07:52:33 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-08-22 07:52:33 +0000
commit8b3c16e6152a527f9aec1a88a9eed74119de7000 (patch)
treef0bde5cea15e696e42cade06a3b12ff6b13acc57 /src/engine/external/glfw/lib/win32/win32_time.c
parent9899666a7ce6679a3b9667ab09f615f4d0769c16 (diff)
downloadzcatch-8b3c16e6152a527f9aec1a88a9eed74119de7000.tar.gz
zcatch-8b3c16e6152a527f9aec1a88a9eed74119de7000.zip
major engine cleanup. dependency on baselib removed. engine is now C code (not ansi tho). some other cruft removed aswell
Diffstat (limited to 'src/engine/external/glfw/lib/win32/win32_time.c')
-rw-r--r--src/engine/external/glfw/lib/win32/win32_time.c146
1 files changed, 146 insertions, 0 deletions
diff --git a/src/engine/external/glfw/lib/win32/win32_time.c b/src/engine/external/glfw/lib/win32/win32_time.c
new file mode 100644
index 00000000..ea35a8e5
--- /dev/null
+++ b/src/engine/external/glfw/lib/win32/win32_time.c
@@ -0,0 +1,146 @@
+//========================================================================

+// GLFW - An OpenGL framework

+// File:        win32_time.c

+// Platform:    Windows

+// API version: 2.6

+// WWW:         http://glfw.sourceforge.net

+//------------------------------------------------------------------------

+// Copyright (c) 2002-2006 Camilla Berglund

+//

+// This software is provided 'as-is', without any express or implied

+// warranty. In no event will the authors be held liable for any damages

+// arising from the use of this software.

+//

+// Permission is granted to anyone to use this software for any purpose,

+// including commercial applications, and to alter it and redistribute it

+// freely, subject to the following restrictions:

+//

+// 1. The origin of this software must not be misrepresented; you must not

+//    claim that you wrote the original software. If you use this software

+//    in a product, an acknowledgment in the product documentation would

+//    be appreciated but is not required.

+//

+// 2. Altered source versions must be plainly marked as such, and must not

+//    be misrepresented as being the original software.

+//

+// 3. This notice may not be removed or altered from any source

+//    distribution.

+//

+//========================================================================

+

+#include "internal.h"

+

+

+//************************************************************************

+//****                  GLFW internal functions                       ****

+//************************************************************************

+

+//========================================================================

+// _glfwInitTimer() - Initialise timer

+//========================================================================

+

+void _glfwInitTimer( void )

+{

+    __int64 freq;

+

+    // Check if we have a performance counter

+    if( QueryPerformanceFrequency( (LARGE_INTEGER *)&freq ) )

+    {

+        // Performance counter is available => use it!

+        _glfwLibrary.Timer.HasPerformanceCounter = GL_TRUE;

+

+        // Counter resolution is 1 / counter frequency

+        _glfwLibrary.Timer.Resolution = 1.0 / (double)freq;

+

+        // Set start time for timer

+        QueryPerformanceCounter( (LARGE_INTEGER *)&_glfwLibrary.Timer.t0_64 );

+    }

+    else

+    {

+        // No performace counter available => use the tick counter

+        _glfwLibrary.Timer.HasPerformanceCounter = GL_FALSE;

+

+        // Counter resolution is 1 ms

+        _glfwLibrary.Timer.Resolution = 0.001;

+

+        // Set start time for timer

+        _glfwLibrary.Timer.t0_32 = _glfw_timeGetTime();

+    }

+}

+

+

+//************************************************************************

+//****               Platform implementation functions                ****

+//************************************************************************

+

+//========================================================================

+// Return timer value in seconds

+//========================================================================

+

+double _glfwPlatformGetTime( void )

+{

+    double  t;

+    __int64 t_64;

+

+    if( _glfwLibrary.Timer.HasPerformanceCounter )

+    {

+        QueryPerformanceCounter( (LARGE_INTEGER *)&t_64 );

+        t =  (double)(t_64 - _glfwLibrary.Timer.t0_64);

+    }

+    else

+    {

+        t = (double)(_glfw_timeGetTime() - _glfwLibrary.Timer.t0_32);

+    }

+

+    // Calculate the current time in seconds

+    return t * _glfwLibrary.Timer.Resolution;

+}

+

+

+//========================================================================

+// Set timer value in seconds

+//========================================================================

+

+void _glfwPlatformSetTime( double t )

+{

+    __int64 t_64;

+

+    if( _glfwLibrary.Timer.HasPerformanceCounter )

+    {

+        QueryPerformanceCounter( (LARGE_INTEGER *)&t_64 );

+        _glfwLibrary.Timer.t0_64 = t_64 - (__int64)(t/_glfwLibrary.Timer.Resolution);

+    }

+    else

+    {

+        _glfwLibrary.Timer.t0_32 = _glfw_timeGetTime() - (int)(t*1000.0);

+    }

+}

+

+

+//========================================================================

+// Put a thread to sleep for a specified amount of time

+//========================================================================

+

+void _glfwPlatformSleep( double time )

+{

+    DWORD t;

+

+    if( time == 0.0 )

+    {

+	t = 0;

+    }

+    else if( time < 0.001 )

+    {

+        t = 1;

+    }

+    else if( time > 2147483647.0 )

+    {

+        t = 2147483647;

+    }

+    else

+    {

+        t = (DWORD)(time*1000.0 + 0.5);

+    }

+    Sleep( t );

+}

+