TestSuite: call flightgear::shutdownQtApp() from fgtest::shutdownTestGlobals()
Some of the unit tests defined with the new test infrastructure[1] initialize the QApplication; for these tests, it is necessary to ensure that the QApplication instance is destroyed before exit() begins, otherwise we get a segfault when run_test_suite terminates (see [2]). In order to prevent this segfault from happening, call flightgear::shutdownQtApp() unconditionally from fgtest::shutdownTestGlobals() as long as Qt support is compiled in (flightgear::shutdownQtApp() is safe to call even if the QApplication hasn't been initialized). [1] Currently, the three PosInitTests::* tests. [2] https://bugreports.qt.io/browse/QTBUG-48709
This commit is contained in:
parent
11f591261e
commit
abc4cdb4c0
1 changed files with 10 additions and 0 deletions
|
@ -3,6 +3,10 @@
|
|||
|
||||
#include "globals.hxx"
|
||||
|
||||
#if defined(HAVE_QT)
|
||||
#include <GUI/QtLauncher.hxx>
|
||||
#endif
|
||||
|
||||
#include <Main/globals.hxx>
|
||||
#include <Main/options.hxx>
|
||||
|
||||
|
@ -93,6 +97,12 @@ namespace fgtest
|
|||
|
||||
void shutdownTestGlobals()
|
||||
{
|
||||
// The QApplication instance must be destroyed before exit() begins, see
|
||||
// <https://bugreports.qt.io/browse/QTBUG-48709> (otherwise, segfault).
|
||||
#if defined(HAVE_QT)
|
||||
flightgear::shutdownQtApp();
|
||||
#endif
|
||||
|
||||
delete globals;
|
||||
}
|
||||
} // of namespace fgtest
|
||||
|
|
Loading…
Reference in a new issue