team-phoenix / Phoenix

A multi-system emulator and library manager designed to be both powerful and easy to use.
http://phoenix.vg
GNU General Public License v2.0
377 stars 39 forks source link

Move InputManager off the main thread #223

Closed athairus closed 8 years ago

athairus commented 8 years ago

LibretroCore depends on getting its input state updated before retro_run() is called. Currently, InputManager is responsible for this. When asked, it'll execute SDL code and read the states of all controllers it's aware of, passing this data down to LibretroCore. Since InputManager lives on the main thread, anything that'll block the main thread will block the entire pipeline from the source, regardless of whether we're using an asynchronous timing source like Looper.

@Druage, what were our plans for offloading the input code to a separate thread while still having input available to QML to control the UI in the future?

athairus commented 8 years ago

Close once #249 is merged, doesn't apply anymore.