diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2014-10-05 16:01:32 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2014-10-05 16:02:26 -0500 |
commit | 699217f5ac7e8ccf5a023fb13b3a26d38c1d847b (patch) | |
tree | 1c05eb9489ae43f20c14f1075edc13759b19bd2a /ksmserver/shutdown.cpp | |
parent | cd928d143dc0f3c24bba655e3c26b615c5942812 (diff) | |
download | tdebase-699217f5ac7e8ccf5a023fb13b3a26d38c1d847b.tar.gz tdebase-699217f5ac7e8ccf5a023fb13b3a26d38c1d847b.zip |
If drkonqi launches during logout show it after 30 seconds have elapsed
Diffstat (limited to 'ksmserver/shutdown.cpp')
-rw-r--r-- | ksmserver/shutdown.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/ksmserver/shutdown.cpp b/ksmserver/shutdown.cpp index 0dda6598c..d7eaafb0e 100644 --- a/ksmserver/shutdown.cpp +++ b/ksmserver/shutdown.cpp @@ -484,7 +484,7 @@ void KSMServer::updateLogoutStatusDialog() if (c->saveYourselfDone) { continue; } - if( isWM( c ) || isCM( c ) || isNotifier( c ) ) { + if( isWM( c ) || isCM( c ) || isNotifier( c ) || isDesktop( c ) ) { continue; } waitingClients++; @@ -814,7 +814,7 @@ void KSMServer::completeShutdownOrCheckpoint() TQDateTime currentDateTime = TQDateTime::currentDateTime(); TQDateTime oldestFoundDateTime = currentDateTime; for( KSMClient* c = clients.first(); c; c = clients.next()) { - if( isWM( c ) || isCM( c ) || isNotifier( c ) ) { + if( isWM( c ) || isCM( c ) || isNotifier( c ) || isDesktop( c ) ) { continue; } if (c->program() != "") { @@ -857,8 +857,9 @@ void KSMServer::startKilling() // kill all clients state = Killing; for ( KSMClient* c = clients.first(); c; c = clients.next() ) { - if( isWM( c ) || isCM( c ) || isNotifier( c ) ) // kill the WM and CM as the last one in order to reduce flicker. Also wait to kill knotify to avoid logout delays + if( isWM( c ) || isCM( c ) || isNotifier( c ) || isDesktop( c ) ) { // kill the WM and CM as the last one in order to reduce flicker. Also wait to kill knotify to avoid logout delays continue; + } kdDebug( 1218 ) << "completeShutdown: client " << c->program() << "(" << c->clientId() << ")" << endl; c->terminationRequestTimeStamp = TQDateTime::currentDateTime(); SmsDie( c->connection() ); @@ -883,7 +884,7 @@ void KSMServer::completeKilling() TQDateTime currentDateTime = TQDateTime::currentDateTime(); TQDateTime oldestFoundDateTime = currentDateTime; for( KSMClient* c = clients.first(); c; c = clients.next()) { - if( isWM( c ) || isCM( c ) || isNotifier( c ) ) { + if( isWM( c ) || isCM( c ) || isNotifier( c ) || isDesktop( c ) ) { continue; } if (c->program() != "") { @@ -929,6 +930,11 @@ void KSMServer::killWM() shutdownNotifierIPDlg=0; } for ( KSMClient* c = clients.first(); c; c = clients.next() ) { + if( isDesktop( c )) { + iswm = true; + c->terminationRequestTimeStamp = TQDateTime::currentDateTime(); + SmsDie( c->connection() ); + } if( isNotifier( c )) { iswm = true; c->terminationRequestTimeStamp = TQDateTime::currentDateTime(); @@ -979,6 +985,11 @@ void KSMServer::killingCompleted() if (child != 0) { kapp->quit(); } + else if (child == 0) { + // If any remaining client(s) do not exit quickly (e.g. drkonqui) terminate so that they can be seen and interacted with + sleep(30); + exit(0); + } } else { kapp->quit(); |