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
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);
|
|
}
|
|
|