[Konsole-devel] Review Request 118839: Fix crash on close
Aurélien Gâteau
agateau at kde.org
Fri Jun 20 12:04:50 UTC 2014
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/118839/
-----------------------------------------------------------
(Updated June 20, 2014, 12:04 p.m.)
Status
------
This change has been marked as submitted.
Review request for Konsole.
Bugs: 331724
http://bugs.kde.org/show_bug.cgi?id=331724
Repository: konsole
Description
-------
Move code responsible for 'forgetting' a view outside of code responding to the
TerminalDisplay deletion.
This avoids a loop like this:
~MainWindow
=> ~QStackedWidget
=> ~TerminalDisplay
=> QObject::destroyed
=> ViewContainer::viewDestroyed
=> ViewContainer::removeViewWidget
- internal cleanup
- try to remove TerminalDisplay from QStackedWidget which is being deleted and
crash
Instead the code now does:
~MainWindow
=> ~QStackedWidget
=> ~TerminalDisplay
=> QObject::destroyed
=> ViewContainer::viewDestroyed
=> ViewContainer::forgetView (does the internal clean up)
And if one tries to explicitly remove a view, sequence is:
ViewContainer::removeView
=> ViewContainer::forgetView
=> ViewContainer::removeViewWidget
The patch also removes ViewManager::focusActiveView() because it causes a crash
when closing a TerminalDisplay as it tries to put the focus on the deleted
TerminalDisplay. I initially called it through a queued connection, but realized
it is actually not needed for focus to be passed to the correct view, so just
removed it.
Diffs
-----
src/ViewContainer.h 60d2bd9
src/ViewContainer.cpp 79c24d5
src/ViewManager.h 047b7ee
src/ViewManager.cpp 75473e9
src/ViewSplitter.cpp bfc727e
Diff: https://git.reviewboard.kde.org/r/118839/diff/
Testing
-------
Started and closed Konsole, created and deleted tabs, created and deleted split views. No crash.
Thanks,
Aurélien Gâteau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/konsole-devel/attachments/20140620/01e67849/attachment.html>
More information about the konsole-devel
mailing list