// sys_win.c -- Win32 system interface code
#include "quakedef.h"
-#include "winquake.h"
+#include <windows.h>
+#include <dsound.h>
#include "errno.h"
#include "resource.h"
#include "conproc.h"
#include "direct.h"
+extern void S_BlockSound (void);
+
cvar_t sys_usetimegettime = {CVAR_SAVE, "sys_usetimegettime", "1"};
// # of seconds to wait on Sys_Error running dedicated before exiting
// sleep time when not focus
#define NOT_FOCUS_SLEEP 20
-int starttime;
-
static qboolean sc_return_on_enter = false;
HANDLE hinput, houtput;
static HANDLE heventChild;
-/*
-===============================================================================
-
-DLL MANAGEMENT
-
-===============================================================================
-*/
-
-dllhandle_t Sys_LoadLibrary (const char* name)
-{
- return LoadLibrary (name);
-}
-
-void Sys_UnloadLibrary (dllhandle_t handle)
-{
- FreeLibrary (handle);
-}
-
-void* Sys_GetProcAddress (dllhandle_t handle, const char* name)
-{
- return (void *)GetProcAddress (handle, name);
-}
-
-
/*
===============================================================================
static int in_sys_error2 = 0;
va_start (argptr, error);
- vsprintf (text, error, argptr);
+ vsnprintf (text, sizeof (text), error, argptr);
va_end (argptr);
// close video so the message box is visible, unless we already tried that
exit (1);
}
-void Sys_Quit (void)
+void Sys_Shutdown (void)
{
- Host_Shutdown();
-
if (tevent)
CloseHandle (tevent);
// shut down QHOST hooks if necessary
DeinitConProc ();
-
- exit (0);
}
+void Sys_PrintToTerminal(const char *text)
+{
+ DWORD dummy;
+ extern HANDLE houtput;
+ if (cls.state == ca_dedicated)
+ WriteFile(houtput, text, strlen (text), &dummy, NULL);
+}
/*
================
return NULL;
}
-void Sys_Sleep (void)
+void Sys_Sleep(int milliseconds)
{
- Sleep (1);
+ if (milliseconds < 1)
+ milliseconds = 1;
+ Sleep(milliseconds);
}
-
-void Sys_SendKeyEvents (void)
+char *Sys_GetClipboardData (void)
{
- MSG msg;
+ char *data = NULL;
+ char *cliptext;
- while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
+ if (OpenClipboard (NULL) != 0)
{
- // we always update if there are any event, even if we're paused
- scr_skipupdate = 0;
-
- if (!GetMessage (&msg, NULL, 0, 0))
- Sys_Quit ();
+ HANDLE hClipboardData;
- TranslateMessage (&msg);
- DispatchMessage (&msg);
+ if ((hClipboardData = GetClipboardData (CF_TEXT)) != 0)
+ {
+ if ((cliptext = GlobalLock (hClipboardData)) != 0)
+ {
+ data = malloc (GlobalSize(hClipboardData)+1);
+ strcpy (data, cliptext);
+ GlobalUnlock (hClipboardData);
+ }
+ }
+ CloseClipboard ();
}
+ return data;
}
-
/*
==============================================================================
==================
*/
HINSTANCE global_hInstance;
-int global_nCmdShow;
const char *argv[MAX_NUM_ARGVS];
char program_name[MAX_OSPATH];
return 0;
global_hInstance = hInstance;
- global_nCmdShow = nCmdShow;
lpBuffer.dwLength = sizeof(MEMORYSTATUS);
GlobalMemoryStatus (&lpBuffer);
GetModuleFileNameA(NULL, program_name, sizeof(program_name) - 1);
argv[0] = program_name;
+ // FIXME: this tokenizer is rather redundent, call a more general one
while (*lpCmdLine && (com_argc < MAX_NUM_ARGVS))
{
- while (*lpCmdLine && ((*lpCmdLine <= 32) || (*lpCmdLine > 126)))
+ while (*lpCmdLine && *lpCmdLine <= 32)
lpCmdLine++;
if (*lpCmdLine)
{
- argv[com_argc] = lpCmdLine;
- com_argc++;
+ if (*lpCmdLine == '\"')
+ {
+ // quoted string
+ argv[com_argc] = lpCmdLine;
+ com_argc++;
- while (*lpCmdLine && ((*lpCmdLine > 32) && (*lpCmdLine <= 126)))
- lpCmdLine++;
+ while (*lpCmdLine && (*lpCmdLine != '\"'))
+ lpCmdLine++;
- if (*lpCmdLine)
+ if (*lpCmdLine)
+ {
+ *lpCmdLine = 0;
+ lpCmdLine++;
+ }
+
+ if (*lpCmdLine == '\"')
+ lpCmdLine++;
+ }
+ else
{
- *lpCmdLine = 0;
- lpCmdLine++;
+ // unquoted word
+ argv[com_argc] = lpCmdLine;
+ com_argc++;
+
+ while (*lpCmdLine && *lpCmdLine > 32)
+ lpCmdLine++;
+
+ if (*lpCmdLine)
+ {
+ *lpCmdLine = 0;
+ lpCmdLine++;
+ }
}
}
}
Sys_Shared_LateInit();
frameoldtime = Sys_DoubleTime ();
-
+
/* main window message loop */
while (1)
{
/* return success of application */
return true;
}
-