cvar_t sys_usetimegettime = {CVAR_SAVE, "sys_usetimegettime", "1"};
#endif
-
-
// =======================================================================
// General routines
// =======================================================================
-void Sys_Quit (void)
+void Sys_Shutdown (void)
{
- Host_Shutdown();
#ifndef WIN32
fcntl (0, F_SETFL, fcntl (0, F_GETFL, 0) & ~FNDELAY);
#endif
fflush(stdout);
- exit(0);
+ SDL_Quit();
}
+
void Sys_Error (const char *error, ...)
{
va_end (argptr);
fprintf(stderr, "Error: %s\n", string);
+ Con_Print ("Quake Error: ");
+ Con_Print (string);
+ Con_Print ("\n");
+
Host_Shutdown ();
exit (1);
}
-void Sys_Print(const char *text)
+void Sys_PrintToTerminal(const char *text)
{
printf("%s", text);
}
double newtime;
#ifdef WIN32
// LordHavoc: note to people modifying this code, DWORD is specifically defined as an unsigned 32bit number, therefore the 65536.0 * 65536.0 is fine.
- if (sys_usetimegettime.integer)
- {
- static int firsttimegettime = true;
- // timeGetTime
- // platform:
- // Windows 95/98/ME/NT/2000/XP
- // features:
- // reasonable accuracy (millisecond)
- // issues:
- // wraps around every 47 days or so (but this is non-fatal to us, odd times are rejected, only causes a one frame stutter)
-
- // make sure the timer is high precision, otherwise different versions of windows have varying accuracy
- if (firsttimegettime)
- {
- timeBeginPeriod (1);
- firsttimegettime = false;
- }
-
- newtime = (double) timeGetTime () / 1000.0;
- }
- else
+ if (!sys_usetimegettime.integer)
{
// QueryPerformanceCounter
// platform:
timescale = 1.0 / ((double) PerformanceFreq.LowPart + (double) PerformanceFreq.HighPart * 65536.0 * 65536.0);
newtime = ((double) PerformanceCount.LowPart + (double) PerformanceCount.HighPart * 65536.0 * 65536.0) * timescale;
#endif
- }
-#else
- struct timeval tp;
- gettimeofday(&tp, NULL);
- newtime = (double) tp.tv_sec + tp.tv_usec / 1000000.0;
+ } else
#endif
+ newtime = (double) SDL_GetTicks() / 1000.0;
+
if (first)
{
SDL_Delay(milliseconds);
}
+char *Sys_GetClipboardData (void)
+{
+#ifdef WIN32
+ char *data = NULL;
+ char *cliptext;
+
+ if (OpenClipboard (NULL) != 0)
+ {
+ HANDLE hClipboardData;
+
+ if ((hClipboardData = GetClipboardData (CF_TEXT)) != 0)
+ {
+ if ((cliptext = GlobalLock (hClipboardData)) != 0)
+ {
+ data = malloc (GlobalSize(hClipboardData)+1);
+ strcpy (data, cliptext);
+ GlobalUnlock (hClipboardData);
+ }
+ }
+ CloseClipboard ();
+ }
+ return data;
+#else
+ return NULL;
+#endif
+}
+
int SDL_main (int argc, char *argv[])
{
double frameoldtime, framenewtime;
Sys_Shared_EarlyInit();
+#ifdef WIN32
+ Cvar_RegisterVariable(&sys_usetimegettime);
+#endif
+
Host_Init();
Sys_Shared_LateInit();