ULONG WINAPI CDirect3DCubeTexture8::Release(THIS)
{
	ComptrGurad<IDirect3DCubeTexture9> gurad(pCubeTexture9);
	ULONG count = pCubeTexture9->Release();
	if (1 == count)
	{
		delete this;
	}
	return count - 1;
}
Example #2
0
ULONG WINAPI CDirect3DDevice8::Release(THIS)
{
	ComptrGurad<IDirect3DDevice9> gurad(pDevice9);
	DWORD count = pDevice9->Release();
	if (1 == count)
	{
		delete this;
	}
	return count - 1;
}
Example #3
0
void ThreadManager::submit( Runable* job )
{
    Thread* thread = NULL;

    {
        ScopeGuard gurad(&mutex);
        thread = get_idle_thread();
    }

    thread->set_job( job );
}
Example #4
0
// 移除数据
bool CArcossCache::Remove( int id, char color, char *vechile )
{
	share::Guard gurad( _mutex ) ;

	ArcossData *p = RemoveIndex( id, color, vechile ) ;
	if ( p == NULL ) {
		return false ;
	}

	CMapArcoss::iterator it = _mapArcoss.find( id ) ;
	if ( it == _mapArcoss.end() ) {
		return false ;
	}

	ArcossHeader *header = it->second ;
	if ( header->_tail == p && header->_head == p ) { // 只有一个元素
		_mapArcoss.erase( it ) ;
		deletefile( id ) ;
		delete header ;
	} else { // 有多个元素的情况
		if ( p == header->_head ){ // 位于头部数据
			header->_head = p->_next ;
			if ( p->_next != NULL ) {
				p->_next->_pre = NULL ;
			}
		} else if ( p == header->_tail ){ // 位于尾部的情况
			header->_tail = p->_pre ;
			if ( p->_pre != NULL ) {
				p->_pre->_next = NULL ;
			}
		} else { // 位于中间的情况
			p->_pre->_next = p->_next ;
			p->_next->_pre = p->_pre ;
		}
		header->_size = header->_size - 1 ;
	}
	delete p ;

	return true ;
}