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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//=============================================================================//
// WinIdle.h - Defines a class for sending idle messages to a window from a secondary thread
#ifndef __WINIDLE_H__
#define __WINIDLE_H__
class CWinIdle { protected: HANDLE m_hIdleEvent, m_hStopEvent;
HWND m_hWnd; UINT m_uMsg; WPARAM m_wParam; LPARAM m_lParam;
DWORD m_dwDelay;
HANDLE m_hIdleThread;
// The thread calling stub
static DWORD WINAPI ThreadStub(LPVOID pIdle); // The actual idle loop
virtual DWORD RunIdle(); public: CWinIdle(); virtual ~CWinIdle();
inline DWORD GetDelay() {return m_dwDelay;} inline void SetDelay(DWORD delay) {m_dwDelay = delay;}
// Member access
virtual HANDLE GetThreadHandle() const { return m_hIdleThread; };
// Start idling, and define the message and window to use
// Returns TRUE on success
virtual BOOL StartIdle(HWND hWnd, UINT uMessage, WPARAM wParam = 0, LPARAM lParam = 0, DWORD dwDelay = 0); // Stop idling
// Returns TRUE on success
virtual BOOL EndIdle(); // Notify the idle process that the message was received.
// Note : If this function is not called, the idle thread will not send any messages
virtual void NextIdle(); };
// Used to slow down the idle thread while dialogs are up.
class IdleChanger { public: IdleChanger(CWinIdle *pIdle, DWORD msDelay) { m_pIdle = pIdle; m_OldDelay = pIdle->GetDelay(); pIdle->SetDelay(msDelay); }
~IdleChanger() { m_pIdle->SetDelay(m_OldDelay); }
CWinIdle *m_pIdle; DWORD m_OldDelay; };
#endif //__WINIDLE_H__
|