From: <ha...@us...> - 2003-03-31 21:32:30
|
Update of /cvsroot/decaldev/source/DecalFilters In directory sc8-pr-cvs1:/tmp/cvs-serv17283 Modified Files: IdentifyQueue.cpp IdentifyQueue.h Log Message: more queue changes.. some for readability (references to pointers scare me) others for performance Index: IdentifyQueue.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IdentifyQueue.cpp 31 Mar 2003 05:33:52 -0000 1.4 --- IdentifyQueue.cpp 31 Mar 2003 21:32:19 -0000 1.5 *************** *** 58,63 **** if( m_bWaiting ) { ! IDStruct* &Front = m_Queue.front(); ! if( abs( Front->lTime - timeGetTime() ) > TIMEOUT ) { if( ++m_lAttempts >= 3 ) --- 58,62 ---- if( m_bWaiting ) { ! if( abs( m_Queue[0]->lTime - timeGetTime() ) > TIMEOUT ) { if( ++m_lAttempts >= 3 ) *************** *** 71,75 **** else { ! Front->lTime = timeGetTime(); m_bWaiting = false; Request(); --- 70,74 ---- else { ! m_Queue[0]->lTime = timeGetTime(); m_bWaiting = false; Request(); *************** *** 91,107 **** if( !m_Queue.empty() ) { ! std::deque< IDStruct* >::iterator pdeque; ! for(pdeque = m_Queue.begin(); ! pdeque != m_Queue.end(); ! pdeque++) ! { ! if ( !IsBadReadPtr( ( void * ) ( *pdeque ), sizeof( IDStruct ) ) ) ! { ! if ( (*pdeque)->lObjectID == lObjectID ) ! { ! return S_OK; ! } ! } ! } } --- 90,99 ---- if( !m_Queue.empty() ) { ! for( std::deque< IDStruct * >::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ ) ! { ! if ( !IsBadReadPtr( reinterpret_cast< void * >( *pDeque ), sizeof( IDStruct ) ) ) ! if ( (*pDeque)->lObjectID == lObjectID ) ! return S_OK; ! } } *************** *** 136,151 **** pMembers->get_NextInt( _bstr_t( "object" ), &lObjectID ); ! IDStruct* &Front = m_Queue.front(); ! ! if( lObjectID == Front->lObjectID ) { #ifdef _DEBUG ! char szOut[2048]; memset( szOut, 0, sizeof( szOut ) ); ! _snprintf( szOut, sizeof( szOut ), "IDF: Deleting ID 0x%8X from Queue!", Front->lObjectID ); ! m_pHooks->ChatOut( _bstr_t( szOut ), 7 ); #endif ! m_lAttempts = 0; ! m_Queue.erase( m_Queue.begin() ); } --- 128,144 ---- pMembers->get_NextInt( _bstr_t( "object" ), &lObjectID ); ! for( std::deque< IDStruct * >::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ ) { + if( lObjectID == m_Queue[0]->lObjectID ) + { #ifdef _DEBUG ! char szOut[2048]; memset( szOut, 0, sizeof( szOut ) ); ! _snprintf( szOut, sizeof( szOut ), "IDF: Deleting ID 0x%8X from Queue!", Front->lObjectID ); ! m_pHooks->ChatOut( _bstr_t( szOut ), 7 ); #endif ! m_lAttempts = 0; ! m_Queue.erase( m_Queue.begin() ); ! } } *************** *** 164,169 **** if( !m_bWaiting ) { - IDStruct* &Front = m_Queue.front(); - #ifdef _DEBUG char szOut[2048]; memset( szOut, 0, sizeof( szOut ) ); --- 157,160 ---- *************** *** 172,179 **** #endif ! m_pHooks->RequestID( Front->lObjectID ); m_bWaiting = true; ! if( Front->lObjectID == 0 ) { m_bWaiting = false; --- 163,170 ---- #endif ! m_pHooks->RequestID( m_Queue[0]->lObjectID ); m_bWaiting = true; ! if( m_Queue[0]->lObjectID == 0 ) { m_bWaiting = false; Index: IdentifyQueue.h =================================================================== RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** IdentifyQueue.h 30 Mar 2003 07:52:15 -0000 1.1 --- IdentifyQueue.h 31 Mar 2003 21:32:21 -0000 1.2 *************** *** 47,51 **** CComPtr< IACHooks > m_pHooks; ! std::deque< IDStruct* > m_Queue; bool m_bWaiting; long m_lAttempts; --- 47,51 ---- CComPtr< IACHooks > m_pHooks; ! std::deque< IDStruct * > m_Queue; bool m_bWaiting; long m_lAttempts; |