#1210 Resolves issue of tuner instances can't be garbage collected due to retained references. Updates several of the tuner controller and tuner editor classes to add/invoke dispose() methods to clear retained instance references. (#1216)

Co-authored-by: Denny Sheirer <sheirerd@ainfosec.com>
This commit is contained in:
Denny Sheirer
2022-04-24 04:56:10 -04:00
committed by GitHub
parent 1b90e0b50c
commit 25a42126df
11 changed files with 171 additions and 58 deletions

View File

@@ -99,6 +99,8 @@ public class DiscoveredTunerEditor extends Editor<DiscoveredTuner> implements ID
super.setItem(tuner);
mEditorScroller.remove(mEditor);
if(hasItem())
{
mEditor = TunerFactory.getEditor(mUserPreferences, getItem(), mTunerManager);

View File

@@ -116,7 +116,7 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
}
}
/**
/**r
* Indicates if the controls are currently being loaded with values.
*/
protected boolean isLoading()
@@ -337,7 +337,7 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
if(mEnabledButton == null)
{
mEnabledButton = new JButton(BUTTON_STATUS_ENABLE);
mEnabledButton.setToolTipText("Enable or disable the tuner for use by sdrtrunk, or attempt to reset a tuner error");
mEnabledButton.setToolTipText("Enable or disable the tuner for use by sdrtrunk");
mEnabledButton.addActionListener(e ->
{
switch(getEnabledButton().getText())
@@ -493,6 +493,11 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
*/
public void dispose()
{
turnOffRecorder();
getFrequencyControl().clearListeners();
getFrequencyCorrectionSpinner().removeChangeListener(mFrequencyAndCorrectionChangeListener);
if(mDiscoveredTuner != null)
{
mDiscoveredTuner.removeTunerStatusListener(this);
@@ -501,9 +506,12 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
{
mDiscoveredTuner.getTuner().removeTunerEventListener(this);
}
mDiscoveredTuner = null;
}
turnOffRecorder();
mUserPreferences = null;
mTunerManager = null;
}
/**