[wayland] Ensure we can tear down ShellClient after Workspace is destroyed
This can happen during tear down of the internal shell clients.
This commit is contained in:
parent
affcbac7e7
commit
3f4e733468
1 changed files with 19 additions and 12 deletions
|
@ -155,9 +155,13 @@ ShellClient::~ShellClient() = default;
|
|||
void ShellClient::destroyClient()
|
||||
{
|
||||
m_closing = true;
|
||||
Deleted *del = Deleted::create(this);
|
||||
Deleted *del = nullptr;
|
||||
if (workspace()) {
|
||||
del = Deleted::create(this);
|
||||
}
|
||||
emit windowClosed(this, del);
|
||||
|
||||
if (workspace()) {
|
||||
StackingUpdatesBlocker blocker(workspace());
|
||||
if (transientFor()) {
|
||||
transientFor()->removeTransient(this);
|
||||
|
@ -170,9 +174,12 @@ void ShellClient::destroyClient()
|
|||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
waylandServer()->removeClient(this);
|
||||
|
||||
if (del) {
|
||||
del->unrefWindow();
|
||||
}
|
||||
m_shellSurface = nullptr;
|
||||
deleteClient(this);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue