Simplify log queue clearing.
Simply just keep popping the queue until it's empty. No point in using a for loop for this. Combined some if statements too.
This commit is contained in:
parent
fe37a772a4
commit
5edce0eeb6
|
@ -205,8 +205,7 @@ void CLogWindow::OnClear(wxCommandEvent& WXUNUSED (event))
|
|||
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(m_LogSection);
|
||||
int msgQueueSize = (int)msgQueue.size();
|
||||
for (int i = 0; i < msgQueueSize; i++)
|
||||
while (!msgQueue.empty())
|
||||
msgQueue.pop();
|
||||
}
|
||||
|
||||
|
@ -280,10 +279,11 @@ void CLogWindow::OnWrapLineCheck(wxCommandEvent& event)
|
|||
|
||||
void CLogWindow::OnLogTimer(wxTimerEvent& WXUNUSED(event))
|
||||
{
|
||||
if (!m_LogAccess) return;
|
||||
if (m_ignoreLogTimer) return;
|
||||
if (!m_LogAccess || m_ignoreLogTimer)
|
||||
return;
|
||||
|
||||
UpdateLog();
|
||||
|
||||
// Scroll to the last line
|
||||
if (!msgQueue.empty())
|
||||
{
|
||||
|
@ -294,19 +294,16 @@ void CLogWindow::OnLogTimer(wxTimerEvent& WXUNUSED(event))
|
|||
|
||||
void CLogWindow::UpdateLog()
|
||||
{
|
||||
if (!m_LogAccess) return;
|
||||
if (!m_Log) return;
|
||||
if (!m_LogAccess || !m_Log)
|
||||
return;
|
||||
|
||||
// m_LogTimer->Stop();
|
||||
// instead of stopping the timer, let's simply ignore its calls during UpdateLog,
|
||||
// because repeatedly stopping and starting a timer churns memory (and potentially leaks it).
|
||||
m_ignoreLogTimer = true;
|
||||
|
||||
if (!msgQueue.empty())
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(m_LogSection);
|
||||
int msgQueueSize = (int)msgQueue.size();
|
||||
for (int i = 0; i < msgQueueSize; i++)
|
||||
while (!msgQueue.empty())
|
||||
{
|
||||
switch (msgQueue.front().first)
|
||||
{
|
||||
|
@ -334,18 +331,18 @@ void CLogWindow::UpdateLog()
|
|||
m_Log->SetDefaultStyle(wxTextAttr(*wxWHITE));
|
||||
break;
|
||||
}
|
||||
|
||||
if (msgQueue.front().second.size())
|
||||
{
|
||||
int j = m_Log->GetLastPosition();
|
||||
int i = m_Log->GetLastPosition();
|
||||
m_Log->AppendText(msgQueue.front().second);
|
||||
// White timestamp
|
||||
m_Log->SetStyle(j, j + 9, wxTextAttr(*wxWHITE));
|
||||
m_Log->SetStyle(i, i + 9, wxTextAttr(*wxWHITE));
|
||||
}
|
||||
|
||||
msgQueue.pop();
|
||||
}
|
||||
} // unlock log
|
||||
|
||||
// m_LogTimer->Start(UPDATETIME);
|
||||
m_ignoreLogTimer = false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue