예제 #1
0
ProcessMonitor* ProcessMonitor::self() {
	while (InterlockedExchange((LPLONG)&lLock, 1) != 0)
		_Sleep(1);

	if (Instance == NULL)
		Instance = new(std::nothrow) ProcessMonitor();

	InterlockedExchange((LPLONG)&lLock, 0);

	return Instance;
}
예제 #2
0
CPoomAddressbook* CPoomAddressbook::self()
{
	while (InterlockedExchange((LPLONG)&lLock, 1) != 0)
		_Sleep(1);

	if (m_pInstance == NULL)
		m_pInstance = new(std::nothrow) CPoomAddressbook();

	InterlockedExchange((LPLONG)&lLock, 0);

	return m_pInstance;
}
예제 #3
0
void BackLightCallbackSlow(POWER_BROADCAST *powerBroadcast, DWORD dwUserData) {
    if (powerBroadcast == NULL || powerBroadcast->Length == 0 ||
            (powerBroadcast->Message & PBT_TRANSITION) == FALSE)
        return;

    if (powerBroadcast->Flags & POWER_STATE_UNATTENDED ||
            powerBroadcast->Flags & POWER_STATE_IDLE ||
            powerBroadcast->Flags & POWER_STATE_USERIDLE) {
        // Light is going OFF
        InterlockedExchange((LPLONG)&(*(BOOL *)dwUserData), FALSE);
    } else {
        // Light is going ON
        Device* dev = Device::self();
        _Sleep(500);

        if (dev->IsDeviceOn()) {
            DBG_TRACE(L"CallBacks.cpp BackLightCallbackSlow ON ", 5, FALSE);
            InterlockedExchange((LPLONG)&(*(BOOL *)dwUserData), TRUE);
        }
    }

    return;
}
예제 #4
0
 void SleepUntil( const Time& Tm ) { _Sleep ( Tm - SystemTime() ); }
예제 #5
0
 void SleepUntil( const Duration& Dur ) { _Sleep ( Dur - ProgramTime() ); }
예제 #6
0
 void Sleep( const Duration& Dur ) { _Sleep( Dur ); }