void ui::sendmouse(char param, vector2d pos) { mouse.update(pos); uielement* front = 0; if (actionsenabled) { if (TryAcquireSRWLockShared(&uilock)) { for (map<char, uielement*>::iterator elit = elements.begin(); elit != elements.end(); elit++) { if (util::colliding(pos, elit->second->bounds()) && elit->second->isactive()) { if (front != 0) front->sendmouse(pos, -1); front = elit->second; } } ReleaseSRWLockShared(&uilock); } } if (front != 0) { mouse.setstate(front->sendmouse(pos, param)); } else { mouse.setstate(param); if (mouse.getstate() == 1) mouse.setstate(0); } }
BOOL CRWLockSlim::AcquireReaderLock( DWORD dwTimeout ) { BOOL bRet = FALSE; #if ( _WIN32_WINNT_WIN7 <= _WIN32_WINNT ) if ( INFINITE == dwTimeout || FALSE == m_bWin7AndLater ) { AcquireSRWLockShared( &m_srwLock ); bRet = TRUE; } else { LARGE_INTEGER lnCurr , lnEnd; QueryPerformanceCounter( &lnCurr ); lnEnd.QuadPart = lnCurr.QuadPart + dwTimeout * ( m_lnFreq.QuadPart / 1000 ); do { QueryPerformanceCounter( &lnCurr ); bRet = (BOOL)TryAcquireSRWLockShared( &m_srwLock ); } while ( lnCurr.QuadPart < lnEnd.QuadPart ); } #else AcquireSRWLockShared( &m_srwLock ); bRet = TRUE; #endif return bRet; }
Error RWLockWindows::read_try_lock() { if (TryAcquireSRWLockShared(&lock) == 0) { return ERR_BUSY; } else { return OK; } }
void ui::draw(ID2D1HwndRenderTarget* target) { field.draw(target); if (TryAcquireSRWLockShared(&uilock)) { for (map<char, uielement*>::iterator elit = elements.begin(); elit != elements.end(); elit++) { elit->second->draw(target); } ReleaseSRWLockShared(&uilock); } mouse.draw(target); }
void ui::update() { field.update(); if (TryAcquireSRWLockShared(&uilock)) { for (map<char, uielement*>::iterator elit = elements.begin(); elit != elements.end(); elit++) { elit->second->update(); } ReleaseSRWLockShared(&uilock); } mouse.update(); }
bool TRI_TryReadLockReadWriteLock (TRI_read_write_lock_t* lock) { #if TRI_WINDOWS_VISTA_LOCKS WaitForSingleObject(lock->_writerEvent, 10); // 10 millis timeout EnterCriticalSection(&lock->_lockReaders); IncrementReaders(lock); LeaveCriticalSection(&lock->_lockReaders); if (WaitForSingleObject(lock->_writerEvent, 0) != WAIT_OBJECT_0) { EnterCriticalSection(&lock->_lockReaders); DecrementReaders(lock); LeaveCriticalSection(&lock->_lockReaders); return false; } return true; #else return (TryAcquireSRWLockShared(&lock->_lock) != 0); #endif }
bool ReadWriteLock::TryBeginRead() { return TryAcquireSRWLockShared(&mLock) == TRUE; }
bool tryLockRead() { return TryAcquireSRWLockShared(&this->_rwlock) != 0; }
bool TRI_TryReadLockReadWriteLock (TRI_read_write_lock_t* lock) { return (TryAcquireSRWLockShared(&lock->_lock) != 0); }
bool RWMutex::tryReadLock() { return TryAcquireSRWLockShared(&_mutex); }
bool tryrdlock() { return TryAcquireSRWLockShared(&rwlock_); }
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock) { return (TryAcquireSRWLockShared(&rwlock->rwlock) ? 0 : EBUSY); }
BOOLEAN try_lock_shared () { return TryAcquireSRWLockShared ( &_lock ) ; }
bool WinReadWriteLock::tryLockForRead() { return TryAcquireSRWLockShared(&m_lock); }
bool SlimReaderWriterLock::try_lock_shared() { return TryAcquireSRWLockShared( &mSrwlock ) != 0; }