diff --git a/server/guhapplication.cpp b/server/guhapplication.cpp index f0e25241..4a867e0b 100644 --- a/server/guhapplication.cpp +++ b/server/guhapplication.cpp @@ -50,6 +50,7 @@ namespace guhserver { static bool s_aboutToShutdown = false; static bool s_doubleShutdownDetected = false; +static int s_shutdownCounter = 0; static void printBacktrace() { @@ -150,16 +151,46 @@ static void catchUnixSignals(const std::vector& quitSignals, const std::vec } if (s_aboutToShutdown) { - s_doubleShutdownDetected = true; - qCWarning(dcApplication()) << "Already shutting down. Be nice and give me some time to clean up, please."; + switch (s_shutdownCounter) { + case 0: + qCWarning(dcApplication()) << "Already shutting down. Be nice and give me some time to clean up, please."; + break; + case 1: + qCCritical(dcApplication()) << "I told you, I'm already shutting down. Be nice and give me some time to clean up, PLEASE."; + break; + case 2: + qCCritical(dcApplication()) << "Still shutting down..."; + break; + case 3: + qCCritical(dcApplication()) << "Hmpf..."; + break; + case 4: + qCCritical(dcApplication()) << "It's getting boring..."; + break; + case 5: + qCCritical(dcApplication()) << "S H U T T I N G DOWN"; + break; + case 6: + qCCritical(dcApplication()) << "S H U T T I N G DOWN"; + break; + case 7: + qCCritical(dcApplication()) << "S H U T T I N G DOWN"; + break; + default: + qCCritical(dcApplication()) << "Fuck this shit."; + break; + } + s_shutdownCounter++; return; } qCDebug(dcApplication) << "====================================="; qCDebug(dcApplication) << "Shutting down guh daemon"; qCDebug(dcApplication) << "====================================="; + s_aboutToShutdown = true; GuhCore::instance()->destroy(); + if (s_doubleShutdownDetected) qCDebug(dcApplication) << "Ok, ok, I'm done! :)";