Add an explicit quit mechanism controlled by plasma
On X Kwin's lifespan used to be managed by XSMP. This accidentally broke in 5.20 as we made kwin start before ksmserver for speed purposes. This leaves kwin to be killed by the display manager as the X connection closes, but this can lead to deadlocks. BUG:428817 On wayland kwin's lifespan is mapped to the lifespan of the ksmserver binary. This is problematic as it makes our entire xwayland robustness redundant if we ultimately rely on an application that /has/ to run in xwayland. BUG: 427688
This commit is contained in:
parent
8f104815e8
commit
71ce1f7a5b
3 changed files with 9 additions and 0 deletions
|
@ -19,6 +19,9 @@
|
|||
<method name="finishSaveSession">
|
||||
<arg name="name" type="s" direction="in" />
|
||||
</method>
|
||||
<!-- Shutdown kwin at the end of the session -->
|
||||
<method name="quit">
|
||||
</method>
|
||||
</interface>
|
||||
</node>
|
||||
|
||||
|
|
5
sm.cpp
5
sm.cpp
|
@ -379,5 +379,10 @@ void SessionManager::finishSaveSession(const QString &name)
|
|||
emit finishSessionSaveRequested(name);
|
||||
}
|
||||
|
||||
void SessionManager::quit()
|
||||
{
|
||||
qApp->quit();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
|
|
1
sm.h
1
sm.h
|
@ -43,6 +43,7 @@ public Q_SLOTS: // DBus API
|
|||
void loadSession(const QString &name);
|
||||
void aboutToSaveSession(const QString &name);
|
||||
void finishSaveSession(const QString &name);
|
||||
void quit();
|
||||
|
||||
private:
|
||||
void setState(SessionState state);
|
||||
|
|
Loading…
Reference in a new issue