Counter Strike : Global Offensive Source Code
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.
 
 
 
 
 
 

186 lines
4.9 KiB

//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include "winlite.h"
#include "sys_utils.h"
#include "engineinterface.h"
// dgoodenough - select the correct stubs header based on current console
// PS3_BUILDFIX#if defined( _PS3 )
#if defined( _PS3 )
#include "ps3/ps3_win32stubs.h"
#endif
#if defined( _X360 )
#include "xbox/xbox_win32stubs.h"
#endif
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
// dgoodenough - All changes in this file duplicate the changes made for
// portal2, i.e. they stub them out on PS3
// PS3_BUILDFIX
// FIXME - I've added a FIXME tag here because despite the changes made for portal2,
// I'm not at all happy about nuking some of these. In particular removing mutices
// and the "WaitForSingleObject" functionality seems like a recipe for disaster in
// a multithreaded environment. Bottom line, I wouldn't mind having a second set of
// eyes give this a once over.
// @wge Doing the same for OSX. Same concerns apply.
#if defined( _OSX ) || defined (LINUX)
// @wge - adapted from portal2/sys_utils.cpp
const unsigned int SYS_NO_ERROR = 0;
const unsigned int SYS_ERROR_INVALID_HANDLE = -1;
#elif !defined( _PS3 )
const unsigned int SYS_NO_ERROR = NO_ERROR;
const unsigned int SYS_ERROR_INVALID_HANDLE = ERROR_INVALID_HANDLE;
#endif
void Sys_SetLastError(unsigned long error)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
::SetLastError(error);
#endif
}
unsigned long Sys_GetLastError()
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
return ::GetLastError();
#else
return 0;
#endif
}
WHANDLE Sys_CreateMutex(const char *mutexName)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
return (WHANDLE)::CreateMutex(NULL, FALSE, TEXT(mutexName));
#else
return 0;
#endif
}
void Sys_ReleaseMutex(WHANDLE mutexHandle)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
::ReleaseMutex((HANDLE)mutexHandle);
#endif
}
#if defined( _OSX ) || defined (LINUX)
// @wge - adapted from portal2/sys_utils.cpp
const unsigned int SYS_WAIT_OBJECT_0 = WAIT_OBJECT_0;
const unsigned int SYS_WAIT_ABANDONED = -2;
#elif !defined( _PS3 )
const unsigned int SYS_WAIT_OBJECT_0 = WAIT_OBJECT_0;
const unsigned int SYS_WAIT_ABANDONED = WAIT_ABANDONED;
#endif
unsigned int Sys_WaitForSingleObject(WHANDLE mutexHandle, int milliseconds)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
return WaitForSingleObject((HANDLE)mutexHandle, milliseconds);
#else
return -1;
#endif
}
unsigned int Sys_RegisterWindowMessage(const char *msgName)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
return ::RegisterWindowMessage(msgName);
#else
return 0;
#endif
}
WHANDLE Sys_FindWindow(const char *className, const char *windowName)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
return (WHANDLE)::FindWindow(className, windowName);
#else
return 0;
#endif
}
void Sys_EnumWindows(void *callbackFunction, int lparam)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
::EnumWindows((WNDENUMPROC)callbackFunction, lparam);
#endif
}
void Sys_GetWindowText(WHANDLE wnd, char *buffer, int bufferSize)
{
// dgoodenough - duplicate changes in portal2, i.e. stub these out on PS3
// PS3_BUILDFIX
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
::GetWindowText((HWND)wnd, buffer, bufferSize - 1);
#else
buffer[0] = 0;
#endif
}
void Sys_PostMessage(WHANDLE wnd, unsigned int msg, unsigned int wParam, unsigned int lParam)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
::PostMessageA((HWND)wnd, msg, wParam, lParam);
#endif
}
void Sys_SetCursorPos(int x, int y)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
::SetCursorPos(x, y);
// engine->SetCursorPos(x,y); // SRC version
#endif
}
#if !defined( _OSX ) && !defined (LINUX)
static ATOM staticWndclassAtom = 0;
static WNDCLASS staticWndclass = { NULL };
static LRESULT CALLBACK staticProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
#if !defined( _PS3 ) && !defined( _OSX ) && !defined (LINUX)
return DefWindowProc(hwnd,msg,wparam,lparam);
#else
return 0;
#endif
}
#endif
WHANDLE Sys_CreateWindowEx(const char *windowName)
{
/*
if (!staticWndclassAtom)
{
memset( &staticWndclass,0,sizeof(staticWndclass) );
staticWndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
staticWndclass.lpfnWndProc = staticProc;
staticWndclass.hInstance = GetModuleHandle(NULL);
staticWndclass.hIcon = 0;
staticWndclass.lpszClassName = windowName;
staticWndclassAtom = ::RegisterClass( &staticWndclass );
DWORD error = ::GetLastError();
}
return (WHANDLE)::CreateWindow(windowName, windowName, 0, 0, 0, 0, 0, 0, 0, GetModuleHandle(NULL), 0);
*/
return (WHANDLE)1;
}
void Sys_DestroyWindow(WHANDLE wnd)
{
//::DestroyWindow((HWND)wnd);
}