From d1eaab771110ae2ce2ebe9cf1689e6c6d06ea1e3 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 3 Aug 2019 23:44:56 +0200 Subject: [PATCH] delay startup of background services to increase user interface response --- owrx/service.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/owrx/service.py b/owrx/service.py index b6c2731..d04ee0b 100644 --- a/owrx/service.py +++ b/owrx/service.py @@ -30,12 +30,13 @@ class ServiceHandler(object): def __init__(self, source): self.services = [] self.source = source + self.startupTimer = None self.source.addClient(self) self.source.getProps().collect("center_freq", "samp_rate").wire(self.onFrequencyChange) - self.updateServices() + self.scheduleServiceStartup() def onSdrAvailable(self): - self.updateServices() + self.scheduleServiceStartup() def onSdrUnavailable(self): self.stopServices() @@ -54,9 +55,16 @@ class ServiceHandler(object): service.start() def onFrequencyChange(self, key, value): + self.stopServices() if not self.source.isAvailable(): return - self.updateServices() + self.scheduleServiceStartup() + + def scheduleServiceStartup(self): + if self.startupTimer: + self.startupTimer.cancel() + self.startupTimer = threading.Timer(10, self.updateServices) + self.startupTimer.start() def updateServices(self): logger.debug("re-scheduling services due to sdr changes")