diff options
Diffstat (limited to 'lumina-desktop')
-rw-r--r-- | lumina-desktop/LSession.cpp | 2 | ||||
-rw-r--r-- | lumina-desktop/WMProcess.cpp | 10 | ||||
-rw-r--r-- | lumina-desktop/WMProcess.h | 1 |
3 files changed, 12 insertions, 1 deletions
diff --git a/lumina-desktop/LSession.cpp b/lumina-desktop/LSession.cpp index 342f509a..b61e32af 100644 --- a/lumina-desktop/LSession.cpp +++ b/lumina-desktop/LSession.cpp @@ -449,7 +449,7 @@ void LSession::updateDesktops(){ //QTimer::singleShot(0,DESKTOPS[i], SLOT(checkResolution())); } } - WM->updateWM(); //Make sure fluxbox also gets prompted to re-load screen config + WM->restartWM(); //Make sure fluxbox also gets prompted to re-load screen config } //Make sure all the background windows are registered on the system as virtual roots QTimer::singleShot(100,this, SLOT(registerDesktopWindows())); diff --git a/lumina-desktop/WMProcess.cpp b/lumina-desktop/WMProcess.cpp index e84e4c22..9e398f93 100644 --- a/lumina-desktop/WMProcess.cpp +++ b/lumina-desktop/WMProcess.cpp @@ -43,6 +43,16 @@ void WMProcess::stopWM(){ } } +void WMProcess::restartWM(){ + if(isRunning()){ + inShutdown = true; + this->kill(); + if(!this->waitForFinished(5000) ){ this->terminate(); }; + inShutdown = false; + } + this->startWM(); +} + void WMProcess::updateWM(){ if(isRunning()){ ::kill(this->pid(), SIGUSR2); //send fluxbox the signal to reload it's configuration diff --git a/lumina-desktop/WMProcess.h b/lumina-desktop/WMProcess.h index 29a06c2f..287a8967 100644 --- a/lumina-desktop/WMProcess.h +++ b/lumina-desktop/WMProcess.h @@ -23,6 +23,7 @@ public: void startWM(); void stopWM(); + void restartWM(); void updateWM(); private: |