Example #1
0
	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);
		}
	}
Example #2
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;
}
Example #3
0
Error RWLockWindows::read_try_lock() {

	if (TryAcquireSRWLockShared(&lock) == 0) {
		return ERR_BUSY;
	} else {
		return OK;
	}
}
Example #4
0
	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);
	}
Example #5
0
	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();
	}
Example #6
0
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
}
Example #7
0
bool ReadWriteLock::TryBeginRead()
{
	return TryAcquireSRWLockShared(&mLock) == TRUE;
}
Example #8
0
 bool tryLockRead()
 {
     return TryAcquireSRWLockShared(&this->_rwlock) != 0;
 }
Example #9
0
bool TRI_TryReadLockReadWriteLock (TRI_read_write_lock_t* lock) {
  return (TryAcquireSRWLockShared(&lock->_lock) != 0);
}
Example #10
0
bool	RWMutex::tryReadLock()
{
	return TryAcquireSRWLockShared(&_mutex);
}
Example #11
0
 bool tryrdlock()
 {
     return TryAcquireSRWLockShared(&rwlock_);
 }
Example #12
0
int
pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock)
{
	return (TryAcquireSRWLockShared(&rwlock->rwlock) ? 0 : EBUSY);
}
Example #13
0
 BOOLEAN try_lock_shared ()
 {
    return TryAcquireSRWLockShared ( &_lock ) ;
 }
bool WinReadWriteLock::tryLockForRead()
{
	return TryAcquireSRWLockShared(&m_lock);
}
bool SlimReaderWriterLock::try_lock_shared()
{
   return TryAcquireSRWLockShared( &mSrwlock ) != 0;
}