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?
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