#1221 resolves null pointer exception in tuner editor when attempting to restart an error tuner. (#1222)

Co-authored-by: Dennis Sheirer <dsheirer@github.com>
This commit is contained in:
Denny Sheirer
2022-04-28 04:40:52 -04:00
committed by GitHub
parent f988344222
commit 77ea43f61a
7 changed files with 71 additions and 40 deletions

View File

@@ -246,8 +246,10 @@ public class DiscoveredTunerModel extends AbstractTableModel implements Listener
* @param bus usb
* @param port usb
*/
public void removeUsbTuner(int bus, int port)
public DiscoveredTuner removeUsbTuner(int bus, int port)
{
DiscoveredTuner removed = null;
mLock.lock();
try
@@ -259,12 +261,15 @@ public class DiscoveredTunerModel extends AbstractTableModel implements Listener
if(discoveredTuner != null)
{
removeDiscoveredTuner(discoveredTuner);
removed = discoveredTuner;
}
}
finally
{
mLock.unlock();
}
return removed;
}
/**

View File

@@ -33,7 +33,6 @@ import io.github.dsheirer.source.tuner.manager.IDiscoveredTunerStatusListener;
import io.github.dsheirer.source.tuner.manager.TunerManager;
import io.github.dsheirer.source.tuner.manager.TunerStatus;
import io.github.dsheirer.util.SwingUtils;
import io.github.dsheirer.util.ThreadPool;
import net.miginfocom.swing.MigLayout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -372,11 +371,7 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
if(!hasTuner() && getDiscoveredTuner().getTunerStatus() == TunerStatus.ERROR)
{
mLog.info("Restarting " + getDiscoveredTuner().getTunerClass() + " tuner");
getDiscoveredTuner().reset();
if(getDiscoveredTuner().isEnabled())
{
ThreadPool.CACHED.submit(() -> getDiscoveredTuner().start());
}
getDiscoveredTuner().restart();
}
});
}
@@ -469,15 +464,18 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
@Override
public void tunerStatusUpdated(DiscoveredTuner discoveredTuner, TunerStatus previous, TunerStatus current)
{
SwingUtils.run(() -> tunerStatusUpdated());
if(current == TunerStatus.ENABLED)
SwingUtils.run(() ->
{
if(hasTuner())
tunerStatusUpdated();
if(current == TunerStatus.ENABLED)
{
getTuner().addTunerEventListener(this);
if(hasTuner())
{
getTuner().addTunerEventListener(this);
}
}
}
});
}
@Override
@@ -507,12 +505,7 @@ public abstract class TunerEditor<T extends Tuner,C extends TunerConfiguration>
{
mDiscoveredTuner.getTuner().removeTunerEventListener(this);
}
mDiscoveredTuner = null;
}
mUserPreferences = null;
mTunerManager = null;
}
/**