Make the synchronizer not a thread.
The synchronizer's work is done from the network proxy's main loop. A minor problem with the old synchronizer was that it considered itself out of date if the network was out of date. This was too generic: the network can have pending requests unrelated to the synchronizer. This resulted in the synchronizer often unnecessarily flipping the wallet between up-to-date and not-up-to-date, and causing unnecessary calls to wallet.save_transactions(). This was observable when opening the network dialog box: frequently just opening it would cause a wallet status change and transaction flush, simply because the network dialog sends a get_parameters() request. This rework of the synchronizer does not have that issue.
This commit is contained in:
@@ -61,10 +61,13 @@ class NetworkProxy(util.DaemonThread):
|
||||
self.blockchain_height = 0
|
||||
self.server_height = 0
|
||||
self.interfaces = []
|
||||
self.jobs = []
|
||||
|
||||
|
||||
def run(self):
|
||||
while self.is_running():
|
||||
for job in self.jobs:
|
||||
job()
|
||||
try:
|
||||
response = self.pipe.get()
|
||||
except util.timeout:
|
||||
|
||||
Reference in New Issue
Block a user