diff --git a/composite.cpp b/composite.cpp --- a/composite.cpp +++ b/composite.cpp @@ -392,19 +392,18 @@ m_scene->removeToplevel(c); foreach (Unmanaged * c, Workspace::self()->unmanagedList()) m_scene->removeToplevel(c); - foreach (Deleted * c, Workspace::self()->deletedList()) - m_scene->removeToplevel(c); foreach (Client * c, Workspace::self()->clientList()) c->finishCompositing(); foreach (Client * c, Workspace::self()->desktopList()) c->finishCompositing(); foreach (Unmanaged * c, Workspace::self()->unmanagedList()) c->finishCompositing(); - foreach (Deleted * c, Workspace::self()->deletedList()) - c->finishCompositing(); if (auto c = kwinApp()->x11Connection()) { xcb_composite_unredirect_subwindows(c, kwinApp()->x11RootWindow(), XCB_COMPOSITE_REDIRECT_MANUAL); } + while (!workspace()->deletedList().isEmpty()) { + workspace()->deletedList().first()->discard(); + } } if (waylandServer()) { foreach (ShellClient *c, waylandServer()->clients()) { @@ -434,9 +433,6 @@ i.setOpacity(static_cast< unsigned long >((*it)->opacity() * 0xffffffff)); } } - // discard all Deleted windows (#152914) - while (!Workspace::self()->deletedList().isEmpty()) - Workspace::self()->deletedList().first()->discard(); } m_finishing = false; emit compositingToggled(false); diff --git a/plugins/scenes/opengl/scene_opengl.cpp b/plugins/scenes/opengl/scene_opengl.cpp --- a/plugins/scenes/opengl/scene_opengl.cpp +++ b/plugins/scenes/opengl/scene_opengl.cpp @@ -2430,7 +2430,12 @@ connect(this, &Renderer::renderScheduled, client->client(), static_cast(&AbstractClient::addRepaint)); } -SceneOpenGLDecorationRenderer::~SceneOpenGLDecorationRenderer() = default; +SceneOpenGLDecorationRenderer::~SceneOpenGLDecorationRenderer() +{ + if (Scene *scene = Compositor::self()->scene()) { + scene->makeOpenGLContextCurrent(); + } +} // Rotates the given source rect 90° counter-clockwise, // and flips it vertically