mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 19:45:20 +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
1 changed files with 15 additions and 10 deletions
|
@ -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…
Add table
Reference in a new issue