Interface events block emulation
Because both emulation and UI are handled on the main thread, any UI event that opens its own event loop (such as opening a menu, holding down a button, dragging a slider or scroller) will pause the emulation while it is in progress.
At best, this causes the sound to cut out or play the same continuous note, and stutter for a few frames after control returns to DOSBox. At worst, this can crash or freeze games that depend heavily on CPU timing or that rely on the system clock for modulating their speed (System Shock is exhibit A for this.)
While this would be fixed automatically by issue <<issue 2>>, it may be more feasible in the short term to run BXEmulator on a separate thread. Indeed, BXEmulator was designed this way as an NSOperation subclass.
There are two fundamental obstacles to this working: