mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-12-27 06:21:02 +00:00
Gui logging in main thread
Do the logging to the GUI log element in the main thread. Not doing this causes issues with the GTK backend of wxWidgets. Plus it's just common sense to try to limit gui calls to one thread.
This commit is contained in:
parent
bcb9ad94c1
commit
dad82aa1eb
@ -212,19 +212,24 @@ void LogFrame::Task()
|
||||
|
||||
const LogPacket item = LogBuffer.Pop();
|
||||
|
||||
while(m_log.GetItemCount() > max_item_count)
|
||||
wxListView& m_log = this->m_log; //makes m_log capturable by the lambda
|
||||
//queue adding the log message to the gui element in the main thread
|
||||
wxTheApp->GetTopWindow()->GetEventHandler()->CallAfter([item, &m_log]()
|
||||
{
|
||||
m_log.DeleteItem(0);
|
||||
wxThread::Yield();
|
||||
}
|
||||
while (m_log.GetItemCount() > max_item_count)
|
||||
{
|
||||
m_log.DeleteItem(0);
|
||||
wxThread::Yield();
|
||||
}
|
||||
|
||||
const int cur_item = m_log.GetItemCount();
|
||||
const int cur_item = m_log.GetItemCount();
|
||||
|
||||
m_log.InsertItem(cur_item, fmt::FromUTF8(item.m_prefix));
|
||||
m_log.SetItem(cur_item, 1, fmt::FromUTF8(item.m_text));
|
||||
m_log.SetItemTextColour(cur_item, fmt::FromUTF8(item.m_colour));
|
||||
m_log.SetColumnWidth(0, -1); // crashes on exit
|
||||
m_log.SetColumnWidth(1, -1);
|
||||
m_log.InsertItem(cur_item, fmt::FromUTF8(item.m_prefix));
|
||||
m_log.SetItem(cur_item, 1, fmt::FromUTF8(item.m_text));
|
||||
m_log.SetItemTextColour(cur_item, fmt::FromUTF8(item.m_colour));
|
||||
m_log.SetColumnWidth(0, -1);
|
||||
m_log.SetColumnWidth(1, -1);
|
||||
});
|
||||
|
||||
#ifdef _WIN32
|
||||
::SendMessage((HWND)m_log.GetHWND(), WM_VSCROLL, SB_BOTTOM, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user