kwin/autotests
Martin Gräßlin d49fba5d30 [libkwinxrenderutils] Clean up static blend picture before going down
Summary:
The method xRenderBlendPicture created a static XRenderPicture on
first usage. To cleanup a XRenderPicture an xcb_connection_t* is needed.
As it's static the cleanup happens on exit handler and at that time Qt
already destroyed the xcb_connection_t*. With a certain chance this will
crash.

To expose the problem a Q_ASSERT(qApp) is added in the destructor of
XRenderPicture. Using xrenderBlendPicture() will hit this assert on
application exit. This is demonstrated by the added auto test.

The actual fix to the problem is moving the static variable out of
the method and introduce a global cleanup method just like the init
method. This is now called from Workspace dtor, so before application
goes down.

CCBUG: 363251

Reviewers: #plasma

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D1731
2016-06-13 15:29:07 +02:00
..
libinput [libinput] A not valid LibInput::Context should return -1 as filedescriptor 2016-06-02 16:23:23 +02:00
libxrenderutils [libkwinxrenderutils] Clean up static blend picture before going down 2016-06-13 15:29:07 +02:00
wayland UpdateClientArea from ShellClient::doSetGeometry if the ShellClient has a strut 2016-06-10 12:56:33 +02:00
abstract_client.h
client.h
CMakeLists.txt [libkwinxrenderutils] Clean up static blend picture before going down 2016-06-13 15:29:07 +02:00
fakeeffectplugin.cpp
fakeeffectplugin.json
fakeeffectplugin_version.cpp
fakeeffectplugin_version.json
mock_abstract_client.cpp
mock_abstract_client.h
mock_client.cpp
mock_client.h
mock_effectshandler.cpp
mock_effectshandler.h
mock_screens.cpp
mock_screens.h
mock_workspace.cpp
mock_workspace.h
test_builtin_effectloader.cpp
test_client_machine.cpp
test_plugin_effectloader.cpp Cancel the EffectLoader query on clear 2016-04-26 15:01:15 +02:00
test_screen_edges.cpp [autotest] Remove workaround in ScreenEdgeTest with Qt 5.6.1 2016-04-26 15:51:16 +02:00
test_screen_paint_data.cpp
test_screens.cpp
test_scripted_effectloader.cpp Cancel the EffectLoader query on clear 2016-04-26 15:01:15 +02:00
test_virtual_desktops.cpp
test_window_paint_data.cpp
test_xcb_size_hints.cpp
test_xcb_window.cpp
test_xcb_wrapper.cpp
test_xrandr_screens.cpp [autotests] Use -displayfd as argument to start Xephyr 2016-05-03 08:13:04 +02:00
testutils.h
workspace.h