Emulator Issues #8319
closedBlocking input code on X11
0%
Description
Our input code on linux has some blocking X11 calls in the hot path (on the cpu thread). This can waste lots of cpu ressources while eg the GPU is busy.
There should an event loop on an input thread which recieves this kind of data for us.
Example stack trace:
#0 0x00007f8d9b7914ed in poll () from /usr/lib/libc.so.6
#1 0x00007f8d93eff9f2 in ?? () from /usr/lib/libxcb.so.1
#2 0x00007f8d93f012ff in ?? () from /usr/lib/libxcb.so.1
#3 0x00007f8d93f01411 in xcb_wait_for_reply () from /usr/lib/libxcb.so.1
#4 0x00007f8d9a8687c7 in _XReply () from /usr/lib/libX11.so.6
#5 0x00007f8d9a85e701 in XQueryKeymap () from /usr/lib/libX11.so.6
#6 0x00000000007c7e98 in ciface::Xlib::KeyboardMouse::UpdateInput (this=0x3a3bf90)
at ../Source/Core/InputCommon/ControllerInterface/Xlib/Xlib.cpp:54
#7 0x00000000007c07bd in ControllerInterface::UpdateInput (
this=0x1770fc0 <g_controller_interface>)
at ../Source/Core/InputCommon/ControllerInterface/ControllerInterface.cpp:143
#8 0x000000000060961d in SystemTimers::UpdateInputCallback (
userdata=<optimized out>, cyclesLate=1)
at ../Source/Core/Core/HW/SystemTimers.cpp:140