-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Fix for issue 17769: wx interactive figure close cause crash #19596
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
1) On figure window (FigureFrameWx) close - remove figure manager from from Gcf class previously Gcf.destroy was called with FigureFrameWx not FigureManagerWx instance so figure was not removed. 2) Destroy now done from FigureManagerWx.destroy() method to prevent multiple calls to the close event handler. 3) Remove unneeded wx mainloop yield calls that cause crash on windows form both FigureManagerWx.destroy and FigureFrameWx.Destroy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for opening your first PR into Matplotlib!
If you have not heard from us in a while, please feel free to ping @matplotlib/developers
or anyone who has commented on the PR. Most of our reviewers are volunteers and sometimes things fall through the cracks.
You can also join us on gitter for real-time discussion.
For details on testing, writing docs, and our review process, please see the developer guide
We strive to be a welcoming and open project. Please follow our Code of Conduct.
Prevent multiple attempts to close the frame by setting to FigureManagerWx.frame to None when closed by GUI. When closed by plt.close() call, the frame is closed in a threadsafe way using wx.CallAfter( frame.Close )
Slightly revised to pass thread tests.
Other notes: Also the unneeded wx mainloop yield calls are removed from both FigureManagerWx.destroy and FigureFrameWx.Destroy as these cause crashes on windows. |
Thanks @tohc1 ! |
Co-authored-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't know why flake8 doesn't flag this.
Co-authored-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
…ure close cause crash
Thank you @tohc1 and congratulations on your first Matplotlib PR 🎉 Hopefully we will hear from you again! |
…596-on-v3.4.x Backport PR #19596 on branch v3.4.x (Fix for issue 17769: wx interactive figure close cause crash)
PR Summary
Fix for issue #17769
On figure window (FigureFrameWx) close - remove figure manager from from Gcf class
previously Gcf.destroy was called with FigureFrameWx not FigureManagerWx instance so figure was not removed correctly.
Destroy now done from FigureManagerWx.destroy() method to prevent multiple calls to the close event handler.
Remove unneeded wx mainloop yield calls that cause crash on windows from both FigureManagerWx.destroy and FigureFrameWx.Destroy.
Tested on windows 10, and mint 20.1.
PR Checklist
pytest
passes).flake8
on changed files to check).flake8-docstrings
and runflake8 --docstring-convention=all
).doc/users/next_whats_new/
(follow instructions in README.rst there).doc/api/next_api_changes/
(follow instructions in README.rst there).