FIX: Ensure previous instance of display class is fully cleaned up after reloading it #1209
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
Fixes #1114
As suspected in #1114, the previous instance of the Display class was not getting garbage collected when using reload display. Checking what still had references to it after a reload showed that it was only the
PyDMMainWindow.home_widget
which still had a reference to it.Fix is to clear that out during the reload. The home widget will get correctly set to the refreshed version of the display later on as part of the reload process so the home button continues to work fine after this change.
Testing
Verified that the test display from #1114 now only ticks once per second after reloading when applying this fix. Added a unit test that catches this issue, fails prior to this fix, and passes after.