BOOL LLMessageLogFilterApply::tick() { std::deque<LLMessageLogEntry>::iterator end = LLFloaterMessageLog::sMessageLogEntries.end(); if(mIter == end || !LLFloaterMessageLog::sInstance) { mFinished = TRUE; if(LLFloaterMessageLog::sInstance) { if(LLFloaterMessageLog::sInstance->mMessageLogFilterApply == this) { LLFloaterMessageLog::sInstance->stopApplyingFilter(); } } return TRUE; } for(S32 i = 0; i < 256; i++) { if(mIter == end) { mFinished = TRUE; if(LLFloaterMessageLog::sInstance) { if(LLFloaterMessageLog::sInstance->mMessageLogFilterApply == this) { LLFloaterMessageLog::sInstance->stopApplyingFilter(); //we're done messing with the deque, push all queued items to the main deque std::deque<LLMessageLogEntry>::iterator queueIter = mQueuedMessages.begin(); std::deque<LLMessageLogEntry>::iterator queueEnd = mQueuedMessages.end(); while(queueIter != queueEnd) { LLFloaterMessageLog::sInstance->conditionalLog(LLFloaterMessageLogItem((*queueIter))); ++queueIter; } mQueuedMessages.clear(); } } return TRUE; } LLFloaterMessageLog::sInstance->conditionalLog(LLFloaterMessageLogItem((*mIter))); mIter++; mProgress++; } LLFloaterMessageLog::sInstance->updateFilterStatus(); return FALSE; }
// static void LLFloaterMessageLog::onLog(LLMessageLogEntry entry) { //don't mess with the queue while a filter's being applied, or face invalid iterators if(!sBusyApplyingFilter) { sMessageLogEntries.push_back(entry); conditionalLog(LLFloaterMessageLogItem(entry)); } }