Commit a7e18789 authored by Vlad Zahorodnii's avatar Vlad Zahorodnii
Browse files

Fix crash in XRenderPictureData::~XRenderPictureData

Summary:
If the XRender scene has cross-faded a window, then, eventually, KWin/X11 will
crash in the destructor of the XRenderPictureData class during tear down with
the following message in the terminal

```
ASSERT: "qApp" in file /home/vlad/Workspace/KDE/src/kde/workspace/kwin/libkwineffects/kwinxrenderutils.cpp, line 163
```

The crash happens because X11StandalonePlatform attempts to clean up XRender
resources, including XRenderUtils::s_blendPicture, after the application object
has been destroyed.

In order to fix the crash, we have to destroy the platform object before the
destructor of QCoreApplication is executed.

Test Plan:
- Enable maximize effect
- Maximize a window
- Replace the current instance of KWin/X11 with another one

Without this patch, KWin/X11 crashes after the third step.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D25768
parent 2c8ff565
......@@ -161,6 +161,7 @@ Application::~Application()
{
delete options;
destroyAtoms();
destroyPlatform();
}
void Application::destroyAtoms()
......@@ -169,6 +170,12 @@ void Application::destroyAtoms()
atoms = nullptr;
}
void Application::destroyPlatform()
{
delete m_platform;
m_platform = nullptr;
}
void Application::resetCrashesCount()
{
crashes = 0;
......
......@@ -231,6 +231,7 @@ protected:
emit x11ConnectionChanged();
}
void destroyAtoms();
void destroyPlatform();
void setTerminating() {
m_terminating = true;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment