diff options
author | Ken Moore <ken@ixsystems.com> | 2017-08-15 11:43:57 -0400 |
---|---|---|
committer | Ken Moore <ken@ixsystems.com> | 2017-08-15 11:43:57 -0400 |
commit | 85ad3904f27ddfc131d5d30b3aea230cbbaa9fbc (patch) | |
tree | cbfbf51ca7692ebf190cd0361cc75301afa574e1 | |
parent | A bit more random work: (diff) | |
download | lumina-85ad3904f27ddfc131d5d30b3aea230cbbaa9fbc.tar.gz lumina-85ad3904f27ddfc131d5d30b3aea230cbbaa9fbc.tar.bz2 lumina-85ad3904f27ddfc131d5d30b3aea230cbbaa9fbc.zip |
Setup the WM restart routine to make it more flexible:
1) The WM will be restarted a maximum of twice with crashes less than 5 seconds apart.
2) This makes it more flexible with regards to opeartions which require that fluxbox be restarted (such as changing the screen around).
-rw-r--r-- | src-qt5/core/lumina-session/session.cpp | 2 | ||||
-rw-r--r-- | src-qt5/core/lumina-session/session.h | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src-qt5/core/lumina-session/session.cpp b/src-qt5/core/lumina-session/session.cpp index fb9c6cd1..3fdf9e66 100644 --- a/src-qt5/core/lumina-session/session.cpp +++ b/src-qt5/core/lumina-session/session.cpp @@ -39,7 +39,7 @@ void LSession::procFinished(){ if(!stopping){ //See if this process is the main desktop binary if(PROCS[i]->objectName()=="runtime"){ stopall(); } - else if(PROCS[i]->objectName()=="wm" && wmfails<3){ wmfails++; PROCS[i]->start(QIODevice::ReadOnly); } //restart the WM + else if(PROCS[i]->objectName()=="wm" && wmfails<2){ wmfails++; PROCS[i]->start(QIODevice::ReadOnly); wmTimer->start(); } //restart the WM //if(PROCS[i]->program().section("/",-1) == "lumina-desktop"){ stopall(); } //start closing down everything //else{ PROCS[i]->start(QIODevice::ReadOnly); } //restart the process //break; diff --git a/src-qt5/core/lumina-session/session.h b/src-qt5/core/lumina-session/session.h index 36d67782..bee244ee 100644 --- a/src-qt5/core/lumina-session/session.h +++ b/src-qt5/core/lumina-session/session.h @@ -8,6 +8,7 @@ #include <QProcess> #include <QDebug> #include <QFileSystemWatcher> +#include <QTimer> #include <sys/types.h> #include <signal.h> @@ -60,6 +61,7 @@ private: QList<QProcess*> PROCS; bool stopping; int wmfails; + QTimer *wmTimer; private slots: void stopall(); @@ -68,9 +70,14 @@ private slots: void startProcess(QString ID, QString command, QStringList watchfiles = QStringList()); + void resetWMCounter(){ wmfails = 0; } public: LSession(){ stopping = false; wmfails = 0; + wmTimer = new QTimer(this); + wmTimer->setSingleShot(true); + wmTimer->setInterval(5000); //5 second timeout + connect(wmTimer, SIGNAL(timeout()), this, SLOT(resetWMCounter()) ); } ~LSession(){ } |