Mercurial > octave
changeset 27485:1bbeb8aeb1cd
Work around freeze-on-quit in macOS (bug #50025).
* octave-qobject.cc (base_qobject::base_qobject): Do not connect()
octave_finished_signal to quit slot when running running on Mac (Q_OS_MAC
#defined).
* octave-qobject.cc (base_qobject::handle_octave_finished): Print "\n" to
stderr before having main thread quit, but only on Mac platforms.
author | Andrew Janke <andrew@apjanke.net> |
---|---|
date | Fri, 11 Oct 2019 10:05:10 -0700 |
parents | 1dbe2d38673f |
children | adcd6740b2c7 |
files | libgui/src/octave-qobject.cc |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/octave-qobject.cc Fri Oct 11 08:50:26 2019 -0700 +++ b/libgui/src/octave-qobject.cc Fri Oct 11 10:05:10 2019 -0700 @@ -141,8 +141,10 @@ connect (m_interpreter_qobj, SIGNAL (octave_finished_signal (int)), this, SLOT (handle_octave_finished (int))); +#if ! defined (Q_OS_MAC) connect (m_interpreter_qobj, SIGNAL (octave_finished_signal (int)), m_main_thread, SLOT (quit (void))); +#endif connect (m_main_thread, SIGNAL (finished (void)), m_main_thread, SLOT (deleteLater (void))); @@ -204,6 +206,11 @@ void base_qobject::handle_octave_finished (int exit_status) { +#if defined (Q_OS_MAC) + // fprintf to stderr is needed by macOS, for poorly-understood reasons. + fprintf (stderr, "\n"); + m_main_thread->quit (); +#endif qApp->exit (exit_status); }