Move EffectWindow and SceneWindow to Deleted
It simplifies finishCompositing() function.
This commit is contained in:
parent
b522bbc8fc
commit
d24f908720
2 changed files with 7 additions and 13 deletions
|
@ -539,7 +539,7 @@ void EffectsHandlerImpl::slotWindowClosed(KWin::Window *c, KWin::Deleted *d)
|
|||
{
|
||||
c->disconnect(this);
|
||||
if (d) {
|
||||
Q_EMIT windowClosed(c->effectWindow());
|
||||
Q_EMIT windowClosed(d->effectWindow());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -181,15 +181,15 @@ void Window::copyToDeleted(Window *c)
|
|||
m_client.reset(c->m_client, false);
|
||||
ready_for_painting = c->ready_for_painting;
|
||||
is_shape = c->is_shape;
|
||||
m_effectWindow = c->m_effectWindow;
|
||||
m_effectWindow = std::exchange(c->m_effectWindow, nullptr);
|
||||
if (m_effectWindow != nullptr) {
|
||||
m_effectWindow->setWindow(this);
|
||||
}
|
||||
m_sceneWindow = c->m_sceneWindow;
|
||||
m_sceneWindow = std::exchange(c->m_sceneWindow, nullptr);
|
||||
if (m_sceneWindow != nullptr) {
|
||||
m_sceneWindow->setToplevel(this);
|
||||
}
|
||||
m_shadow = c->m_shadow;
|
||||
m_shadow = std::exchange(c->m_shadow, nullptr);
|
||||
if (m_shadow) {
|
||||
m_shadow->setToplevel(this);
|
||||
}
|
||||
|
@ -366,15 +366,9 @@ void Window::finishCompositing(ReleaseReason releaseReason)
|
|||
item->destroyDamage();
|
||||
}
|
||||
}
|
||||
if (m_shadow && m_shadow->toplevel() == this) { // otherwise it's already passed to Deleted, don't free data
|
||||
deleteShadow();
|
||||
}
|
||||
if (m_effectWindow && m_effectWindow->window() == this) { // otherwise it's already passed to Deleted, don't free data
|
||||
deleteEffectWindow();
|
||||
}
|
||||
if (m_sceneWindow && m_sceneWindow->window() == this) { // otherwise it's already passed to Deleted, don't free data
|
||||
deleteSceneWindow();
|
||||
}
|
||||
}
|
||||
|
||||
void Window::addRepaint(const QRect &rect)
|
||||
|
|
Loading…
Reference in a new issue