Review Request 122184: Remove seemingly outdated hack deleting the currently used QStyle at teardown

David Edmundson david at davidedmundson.co.uk
Wed Jan 21 16:57:44 UTC 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/122184/
-----------------------------------------------------------

(Updated Jan. 21, 2015, 4:57 p.m.)


Review request for Plasma, David Faure and Hugo Pereira Da Costa.


Changes
-------

Change to only delete our own style objects when the plugin is deleted.

This potentially seems to be a better fix for the original problem; a developer could create multiple QStyle objects and potentially they will all have event filters on the QApplication which apparently might emit an event on exit().


Repository: oxygen


Description
-------

According to the comment we need to delete the qstyle object before the
plugin if the application exits with exit(). A small test showed this is
no longer the case.

More importantly this patch fixes a crash we see when styles were switched at
runtime and the app uses exit().

Because Breeze has a similar delete line the first would run deleting
the style object but leaving a dangling pointer, the second would run
and crash.

Even if they only deleted their own style, both need to check the active style which means the second one is always accessing a dangling pointer.

----

A similar approach needs to go into Breeze too. I shall copy that if this gets in.


Diffs (updated)
-----

  kstyle/oxygenstyleplugin.cpp 409ec13 

Diff: https://git.reviewboard.kde.org/r/122184/diff/


Testing
-------

Wrote a unit test that calls exit(0) on button press. This used to crash if we changed theme and then pressed the button. Now it no longer crashes ever.

Checked that kglobalaccel5 no longer crashes on exit after changing Breeze->Oxygen and does not crash after changing from Oxygen->Breeze


Thanks,

David Edmundson

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20150121/88d9d721/attachment.html>


More information about the Plasma-devel mailing list