* [PATCH] ui/cocoa: Do not exit immediately after shutdown
@ 2021-02-19 8:46 Akihiko Odaki
2021-02-19 10:21 ` Peter Maydell
0 siblings, 1 reply; 5+ messages in thread
From: Akihiko Odaki @ 2021-02-19 8:46 UTC (permalink / raw)
Cc: Peter Maydell, qemu-devel, Akihiko Odaki, Gerd Hoffmann
ui/cocoa used to call exit immediately after calling
qemu_system_shutdown_request, which prevents QEMU from actually
perfoming system shutdown. Just sleep forever, and wait QEMU to call
exit and kill the Cocoa thread.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
---
ui/cocoa.m | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 13fba8103e1..65bb74134ca 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -1121,7 +1121,7 @@ - (void)applicationWillTerminate:(NSNotification *)aNotification
COCOA_DEBUG("QemuCocoaAppController: applicationWillTerminate\n");
qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
- exit(0);
+ [NSThread sleepForTimeInterval:INFINITY];
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
--
2.24.3 (Apple Git-128)
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] ui/cocoa: Do not exit immediately after shutdown
2021-02-19 8:46 [PATCH] ui/cocoa: Do not exit immediately after shutdown Akihiko Odaki
@ 2021-02-19 10:21 ` Peter Maydell
2021-02-19 11:16 ` [PATCH v2] " Akihiko Odaki
2021-02-19 15:01 ` [PATCH] " Gerd Hoffmann
0 siblings, 2 replies; 5+ messages in thread
From: Peter Maydell @ 2021-02-19 10:21 UTC (permalink / raw)
To: Akihiko Odaki; +Cc: QEMU Developers, Gerd Hoffmann
On Fri, 19 Feb 2021 at 08:46, Akihiko Odaki <akihiko.odaki@gmail.com> wrote:
>
> ui/cocoa used to call exit immediately after calling
> qemu_system_shutdown_request, which prevents QEMU from actually
> perfoming system shutdown. Just sleep forever, and wait QEMU to call
> exit and kill the Cocoa thread.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
> ---
> ui/cocoa.m | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/ui/cocoa.m b/ui/cocoa.m
> index 13fba8103e1..65bb74134ca 100644
> --- a/ui/cocoa.m
> +++ b/ui/cocoa.m
> @@ -1121,7 +1121,7 @@ - (void)applicationWillTerminate:(NSNotification *)aNotification
> COCOA_DEBUG("QemuCocoaAppController: applicationWillTerminate\n");
>
> qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
> - exit(0);
> + [NSThread sleepForTimeInterval:INFINITY];
I think that as it stands this change is probably a bit risky,
because the QEMU action for "what do I do on a shutdown request"
is not necessarily "exit" -- the QMP 'set-action' command allows
a user to configure QEMU to just pause on a shutdown, which will
result in this loop going forever (or until OSX gets bored and
forcibly terminates the process).
It would also be useful to have a comment, something like:
/*
* Sleep here, because returning will cause OSX to kill us
* immediately; the QEMU main loop will handle the shutdown
* request and terminate the process.
*/
?
> }
Gerd: I notice that the only ui frontends that try to do this
SHUTDOWN_CAUSE_HOST_UI thing are the Cocoa UI and the SDL2 UI.
The GTK UI does
qmp_quit()
instead; the SDL2 UI does
shutdown_action = SHUTDOWN_ACTION_POWEROFF;
qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
(presumably to avoid the "maybe the user told us to 'pause'"
issue I mention above). None of the other UI frontends have
any shutdown related handling. Shouldn't we be consistent
about how we do this ?
thanks
-- PMM
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2] ui/cocoa: Do not exit immediately after shutdown
2021-02-19 10:21 ` Peter Maydell
@ 2021-02-19 11:16 ` Akihiko Odaki
2021-03-11 12:52 ` Gerd Hoffmann
2021-02-19 15:01 ` [PATCH] " Gerd Hoffmann
1 sibling, 1 reply; 5+ messages in thread
From: Akihiko Odaki @ 2021-02-19 11:16 UTC (permalink / raw)
Cc: Peter Maydell, qemu-devel, Akihiko Odaki, Gerd Hoffmann
ui/cocoa used to call exit immediately after calling
qemu_system_shutdown_request, which prevents QEMU from actually
perfoming system shutdown. Just sleep forever, and wait QEMU to call
exit and kill the Cocoa thread.
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
---
ui/cocoa.m | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 13fba8103e1..cbd03667bd8 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -1121,7 +1121,13 @@ - (void)applicationWillTerminate:(NSNotification *)aNotification
COCOA_DEBUG("QemuCocoaAppController: applicationWillTerminate\n");
qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
- exit(0);
+
+ /*
+ * Sleep here, because returning will cause OSX to kill us
+ * immediately; the QEMU main loop will handle the shutdown
+ * request and terminate the process.
+ */
+ [NSThread sleepForTimeInterval:INFINITY];
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
--
2.24.3 (Apple Git-128)
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] ui/cocoa: Do not exit immediately after shutdown
2021-02-19 10:21 ` Peter Maydell
2021-02-19 11:16 ` [PATCH v2] " Akihiko Odaki
@ 2021-02-19 15:01 ` Gerd Hoffmann
1 sibling, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2021-02-19 15:01 UTC (permalink / raw)
To: Peter Maydell; +Cc: QEMU Developers, Akihiko Odaki
> Gerd: I notice that the only ui frontends that try to do this
> SHUTDOWN_CAUSE_HOST_UI thing are the Cocoa UI and the SDL2 UI.
> The GTK UI does
> qmp_quit()
> instead; the SDL2 UI does
> shutdown_action = SHUTDOWN_ACTION_POWEROFF;
> qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
> (presumably to avoid the "maybe the user told us to 'pause'"
> issue I mention above).
Seems so, qemu hangs in "[paused]" indeed when started with
-no-shutdown.
> None of the other UI frontends have
> any shutdown related handling. Shouldn't we be consistent
> about how we do this ?
Makes sense. Probably best with a little 3-line helper called by all
UIs so we are consistent.
take care,
Gerd
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] ui/cocoa: Do not exit immediately after shutdown
2021-02-19 11:16 ` [PATCH v2] " Akihiko Odaki
@ 2021-03-11 12:52 ` Gerd Hoffmann
0 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2021-03-11 12:52 UTC (permalink / raw)
To: Akihiko Odaki; +Cc: Peter Maydell, qemu-devel
On Fri, Feb 19, 2021 at 08:16:52PM +0900, Akihiko Odaki wrote:
> ui/cocoa used to call exit immediately after calling
> qemu_system_shutdown_request, which prevents QEMU from actually
> perfoming system shutdown. Just sleep forever, and wait QEMU to call
> exit and kill the Cocoa thread.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Added to UI patch queue.
thanks,
Gerd
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-03-11 12:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-19 8:46 [PATCH] ui/cocoa: Do not exit immediately after shutdown Akihiko Odaki
2021-02-19 10:21 ` Peter Maydell
2021-02-19 11:16 ` [PATCH v2] " Akihiko Odaki
2021-03-11 12:52 ` Gerd Hoffmann
2021-02-19 15:01 ` [PATCH] " Gerd Hoffmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.