Create "shutdown" message to find how far we get if swift hangs during shutdown

This commit is contained in:
Klaus Basan
2020-03-29 17:09:09 +02:00
committed by Mat Sutcliffe
parent 6eb767f938
commit 0ee522426a
3 changed files with 24 additions and 2 deletions

View File

@@ -1046,12 +1046,18 @@ namespace BlackCore
if (m_shutdownInProgress) { return; } if (m_shutdownInProgress) { return; }
m_shutdownInProgress = true; m_shutdownInProgress = true;
CLogMessage(this).info(u"Graceful shutdown of CApplication started");
// info that we will shutdown // info that we will shutdown
emit this->aboutToShutdown(); emit this->aboutToShutdown();
// Release all input devices to not cause any accidental hotkey triggers anymore. // Release all input devices to not cause any accidental hotkey triggers anymore.
// This is also necessary to properly free platform specific instances at a defined point in time. // This is also necessary to properly free platform specific instances at a defined point in time.
if (m_inputManager) { m_inputManager->releaseDevices(); } if (m_inputManager)
{
CLogMessage(this).info(u"Graceful shutdown of CApplication, released devices");
m_inputManager->releaseDevices();
}
// mark as shutdown // mark as shutdown
if (m_networkWatchDog) { m_networkWatchDog->gracefulShutdown(); } if (m_networkWatchDog) { m_networkWatchDog->gracefulShutdown(); }
@@ -1071,6 +1077,8 @@ namespace BlackCore
if (this->supportsContexts()) if (this->supportsContexts())
{ {
CLogMessage(this).info(u"Graceful shutdown of CApplication, shutdown of contexts");
// clean up facade // clean up facade
m_coreFacade->gracefulShutdown(); m_coreFacade->gracefulShutdown();
m_coreFacade.reset(); m_coreFacade.reset();
@@ -1078,6 +1086,8 @@ namespace BlackCore
if (m_webDataServices) if (m_webDataServices)
{ {
CLogMessage(this).info(u"Graceful shutdown of CApplication, shutdown of web services");
m_webDataServices->gracefulShutdown(); m_webDataServices->gracefulShutdown();
m_webDataServices.reset(); m_webDataServices.reset();
} }
@@ -1094,8 +1104,10 @@ namespace BlackCore
m_networkWatchDog = nullptr; m_networkWatchDog = nullptr;
} }
CLogMessage(this).info(u"Graceful shutdown of CApplication, shutdown of logger");
m_fileLogger->close(); m_fileLogger->close();
// clean up all in "deferred delete state"
qApp->sendPostedEvents(nullptr, QEvent::DeferredDelete); qApp->sendPostedEvents(nullptr, QEvent::DeferredDelete);
sApp = nullptr; sApp = nullptr;

View File

@@ -1325,8 +1325,10 @@ namespace BlackGui
{ {
if (m_shutdownInProgress) { return; } if (m_shutdownInProgress) { return; }
CApplication::gracefulShutdown(); CApplication::gracefulShutdown();
CLogMessage(this).info(u"Graceful shutdown of GUI application started");
if (m_saveMainWidgetState) if (m_saveMainWidgetState)
{ {
CLogMessage(this).info(u"Graceful shutdown, saving geometry");
this->saveWindowGeometryAndState(); this->saveWindowGeometryAndState();
} }
} }

View File

@@ -17,6 +17,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <QApplication> #include <QApplication>
#include <QTextStream>
using namespace BlackGui; using namespace BlackGui;
using namespace BlackMisc; using namespace BlackMisc;
@@ -49,6 +50,13 @@ int main(int argc, char *argv[])
SwiftGuiStd w(windowMode); SwiftGuiStd w(windowMode);
w.show(); w.show();
int r = a.exec(); const int r = a.exec();
// log we are really closing
QTextStream ts(stdout);
ts << "swift is closing now ......\n";
ts.flush();
// bye
return r; return r;
} }