Bug 133044 - regression: Since 3.5.4 KDE does not seem to wait for apps to quit before shutting down
Summary: regression: Since 3.5.4 KDE does not seem to wait for apps to quit before shu...
Status: RESOLVED FIXED
Alias: None
Product: ksmserver
Classification: Unmaintained
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: Lubos Lunak
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-08-26 23:10 UTC by S. Burmeister
Modified: 2006-08-30 15:16 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description S. Burmeister 2006-08-26 23:10:38 UTC
Version:            (using KDE KDE 3.5.4)
Installed from:    SuSE RPMs
OS:                Linux

Since I isntalled 3.5.4 it often happens that on next startup e.g. kontact tells me that it is already running. Obviously it is not, but it was not shut down properly and hence the lock-file not removed. Read emails re-appear as unread.

Same for kmix, i.e. it does not save the mute state.

amarok sometimes does not get restarted, i.e. was apparently not saved as part of the session.

This did not happen in 3.5.3.
Comment 1 Lubos Lunak 2006-08-30 15:16:14 UTC
SVN commit 578861 by lunakl:

Increase timeout during session saving and killing.
BUG: 133044



 M  +2 -2      server.h  
 M  +12 -2     shutdown.cpp  


--- branches/KDE/3.5/kdebase/ksmserver/server.h #578860:578861
@@ -126,8 +126,8 @@
     void discardSession();
     void storeSession();
 
-    void startProtection() { protectionTimer.start( 8000, TRUE ); }
-    void endProtection() { protectionTimer.stop(); }
+    void startProtection();
+    void endProtection();
 
     void startApplication( QStringList command,
         const QString& clientMachine = QString::null,
--- branches/KDE/3.5/kdebase/ksmserver/shutdown.cpp #578860:578861
@@ -359,6 +359,16 @@
     state = Idle;
 }
 
+void KSMServer::startProtection()
+{
+    protectionTimer.start( 10000, true );
+}
+
+void KSMServer::endProtection()
+{
+    protectionTimer.stop();
+}
+
 /*
    Internal protection slot, invoked when clients do not react during
   shutdown.
@@ -445,7 +455,7 @@
     for ( KSMClient* c = clients.first(); c; c = clients.next() ) {
         if( isWM( c )) {
             kdDebug( 1218 ) << "Killing WM: " << c->program() << "(" << c->clientId() << ")" << endl;
-            QTimer::singleShot( 1000, this, SLOT( timeoutWMQuit()));
+            QTimer::singleShot( 2000, this, SLOT( timeoutWMQuit()));
             SmsDie( c->connection());
             return;
         }
@@ -467,7 +477,7 @@
     kdDebug( 1218 ) << " We killed all clients. We have now clients.count()=" <<
        clients.count() << endl;
     completeKilling();
-    QTimer::singleShot( 4000, this, SLOT( timeoutQuit() ) );
+    QTimer::singleShot( 10000, this, SLOT( timeoutQuit() ) );
 }
 
 void KSMServer::completeKilling()