Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

180 lines
3.7 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #include "winlite.h"
  8. #include "Sys_Utils.h"
  9. #include "EngineInterface.h"
  10. #include "tier0/vcrmode.h"
  11. #if defined( _X360 )
  12. #include "xbox/xbox_win32stubs.h"
  13. #endif
  14. // memdbgon must be the last include file in a .cpp file!!!
  15. #include "tier0/memdbgon.h"
  16. #ifdef WIN32
  17. const unsigned int SYS_NO_ERROR = NO_ERROR;
  18. const unsigned int SYS_ERROR_INVALID_HANDLE = ERROR_INVALID_HANDLE;
  19. void Sys_SetLastError(unsigned long error)
  20. {
  21. ::SetLastError(error);
  22. }
  23. unsigned long Sys_GetLastError()
  24. {
  25. return ::GetLastError();
  26. }
  27. WHANDLE Sys_CreateMutex(const char *mutexName)
  28. {
  29. return (WHANDLE)::CreateMutex(NULL, FALSE, TEXT(mutexName));
  30. }
  31. void Sys_ReleaseMutex(WHANDLE mutexHandle)
  32. {
  33. ::ReleaseMutex((HANDLE)mutexHandle);
  34. }
  35. const unsigned int SYS_WAIT_OBJECT_0 = WAIT_OBJECT_0;
  36. const unsigned int SYS_WAIT_ABANDONED = WAIT_ABANDONED;
  37. unsigned int Sys_WaitForSingleObject(WHANDLE mutexHandle, int milliseconds)
  38. {
  39. return VCRHook_WaitForSingleObject((HANDLE)mutexHandle, milliseconds);
  40. }
  41. unsigned int Sys_RegisterWindowMessage(const char *msgName)
  42. {
  43. return ::RegisterWindowMessage(msgName);
  44. }
  45. WHANDLE Sys_FindWindow(const char *className, const char *windowName)
  46. {
  47. return (WHANDLE)::FindWindow(className, windowName);
  48. }
  49. void Sys_EnumWindows(void *callbackFunction, int lparam)
  50. {
  51. ::EnumWindows((WNDENUMPROC)callbackFunction, lparam);
  52. }
  53. #ifndef _XBOX
  54. void Sys_GetWindowText(WHANDLE wnd, char *buffer, int bufferSize)
  55. {
  56. ::GetWindowText((HWND)wnd, buffer, bufferSize - 1);
  57. }
  58. #endif
  59. void Sys_PostMessage(WHANDLE wnd, unsigned int msg, unsigned int wParam, unsigned int lParam)
  60. {
  61. ::PostMessageA((HWND)wnd, msg, wParam, lParam);
  62. }
  63. #ifndef _XBOX
  64. void Sys_SetCursorPos(int x, int y)
  65. {
  66. ::SetCursorPos(x, y);
  67. // engine->SetCursorPos(x,y); // SRC version
  68. }
  69. #endif
  70. #ifndef _XBOX
  71. static ATOM staticWndclassAtom = 0;
  72. static WNDCLASS staticWndclass = { NULL };
  73. #endif
  74. static LRESULT CALLBACK staticProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
  75. {
  76. return DefWindowProc(hwnd,msg,wparam,lparam);
  77. }
  78. WHANDLE Sys_CreateWindowEx(const char *windowName)
  79. {
  80. /*
  81. if (!staticWndclassAtom)
  82. {
  83. memset( &staticWndclass,0,sizeof(staticWndclass) );
  84. staticWndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
  85. staticWndclass.lpfnWndProc = staticProc;
  86. staticWndclass.hInstance = GetModuleHandle(NULL);
  87. staticWndclass.hIcon = 0;
  88. staticWndclass.lpszClassName = windowName;
  89. staticWndclassAtom = ::RegisterClass( &staticWndclass );
  90. DWORD error = ::GetLastError();
  91. }
  92. return (WHANDLE)::CreateWindow(windowName, windowName, 0, 0, 0, 0, 0, 0, 0, GetModuleHandle(NULL), 0);
  93. */
  94. return (WHANDLE)1;
  95. }
  96. void Sys_DestroyWindow(WHANDLE wnd)
  97. {
  98. //::DestroyWindow((HWND)wnd);
  99. }
  100. #elif defined( POSIX )
  101. const unsigned int SYS_NO_ERROR = 0;
  102. const unsigned int SYS_ERROR_INVALID_HANDLE = 0;
  103. const unsigned int SYS_WAIT_OBJECT_0 = 0;
  104. const unsigned int SYS_WAIT_ABANDONED = 0;
  105. void Sys_SetLastError(unsigned long error)
  106. {
  107. errno = error;
  108. }
  109. unsigned long Sys_GetLastError()
  110. {
  111. return errno;
  112. }
  113. WHANDLE Sys_CreateMutex(const char *mutexName)
  114. {
  115. Assert( !"Implement me" );
  116. return 0;
  117. }
  118. void Sys_ReleaseMutex(WHANDLE mutexHandle)
  119. {
  120. Assert( !"Implement me" );
  121. }
  122. void Sys_PostMessage(WHANDLE wnd, unsigned int msg, unsigned int wParam, unsigned int lParam)
  123. {
  124. Assert( !"Implement me" );
  125. }
  126. unsigned int Sys_RegisterWindowMessage(const char *msgName)
  127. {
  128. Assert( !"Implement me" );
  129. return 0;
  130. }
  131. unsigned int Sys_WaitForSingleObject(WHANDLE mutexHandle, int milliseconds)
  132. {
  133. return SYS_WAIT_ABANDONED;
  134. }
  135. void Sys_EnumWindows(void *callbackFunction, int lparam)
  136. {
  137. Assert( !"Implement me" );
  138. }
  139. #else
  140. #error
  141. #endif