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
This commit is contained in:
parent
2c8ff56540
commit
a7e18789cb
2 changed files with 8 additions and 0 deletions
7
main.cpp
7
main.cpp
|
@ -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;
|
||||
|
|
1
main.h
1
main.h
|
@ -231,6 +231,7 @@ protected:
|
|||
emit x11ConnectionChanged();
|
||||
}
|
||||
void destroyAtoms();
|
||||
void destroyPlatform();
|
||||
|
||||
void setTerminating() {
|
||||
m_terminating = true;
|
||||
|
|
Loading…
Reference in a new issue