• P
    ui/cocoa: Perform UI operations only on the main thread · 5588840f
    Peter Maydell 提交于
    The OSX Mojave release is more picky about enforcing the Cocoa API
    restriction that only the main thread may perform UI calls. To
    accommodate this we need to restructure the Cocoa code:
     * the special OSX main() creates a second thread and uses
       that to call the vl.c qemu_main(); the original main
       thread goes into the OSX event loop
     * the refresh, switch and update callbacks asynchronously
       tell the main thread to do the necessary work
     * the refresh callback no longer does the "get events from the
       UI event queue and handle them" loop, since we now use
       the stock OSX event loop. Instead our NSApplication sendEvent
       method will either deal with them or pass them on to OSX
    
    All these things have to be changed in one commit, to avoid
    breaking bisection.
    
    Note that since we use dispatch_get_main_queue(), this bumps
    our minimum version requirement to OSX 10.10 Yosemite (released
    in 2014, unsupported by Apple since 2017).
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: NRoman Bolshakov <r.bolshakov@yadro.com>
    Tested-by: NRoman Bolshakov <r.bolshakov@yadro.com>
    Message-id: 20190225102433.22401-8-peter.maydell@linaro.org
    Message-id: 20190214102816.3393-8-peter.maydell@linaro.org
    5588840f
cocoa.m 64.4 KB