On 2022/07/17 1:39, Paolo Bonzini wrote:
Il sab 16 lug 2022, 13:30 Akihiko Odaki <akihiko.od...@gmail.com> ha
scritto:
On 2022/07/16 19:16, Paolo Bonzini wrote:
On 7/15/22 15:47, Akihiko Odaki wrote:
static void *call_qemu_main(void *opaque)
{
...
+ [NSApp terminate:nil];
Is this thread-safe? I think it should be something like:
Yes, -[NSApplication terminate:] is thread-safe. Methods of
NSApplication handle dispatches to the main thread by themselves.
Is this documented anywhere?
Thread-unsafe classes (and more importantly, main thread only classes)
are rather exceptional, and they are listed at:
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html
Regards,
Akihiko Odaki
Paolo
Regards,
Akihiko Odaki
- here:
/*
* Nothing more to do in the QEMU thread, ask the application
* to exit.
*/
dispatch_async(dispatch_get_main_queue(), ^{
[NSApp terminate: nil];
});
- in verifyQuit:
if([alert runModal] == NSAlertSecondButtonReturn) {
with_iothread_lock(^{
shutdown_action = SHUTDOWN_ACTION_POWEROFF;
qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
});
}
/* and just return void */
- applicationShouldTerminate: should be just
if (qatomic_read(&qemu_main_terminating)) {
return NSTerminateNow;
} else {
dispatch_async(dispatch_get_main_queue(), ^{
[self verifyQuit];
});
}
return NSTerminateCancel;
- applicationWillTerminate: can be just the qemu_thread_join
Paolo