tcall wallet.wait_until_synchronized before commands - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 079cb311ecec0b42df6d28e22b9dd107cb5f6c2c DIR parent b70f8c888a33060d7d166e2672cab96002d5fd01 HTML Author: ThomasV <thomasv@electrum.org> Date: Thu, 29 Oct 2015 05:01:06 +0100 call wallet.wait_until_synchronized before commands Diffstat: M electrum | 3 ++- M gui/android.py | 2 +- M gui/gtk.py | 4 ++-- M gui/qt/installwizard.py | 2 +- M lib/wallet.py | 23 ++++++++++------------- 5 files changed, 16 insertions(+), 18 deletions(-) --- DIR diff --git a/electrum b/electrum t@@ -153,7 +153,7 @@ def init_cmdline(config): wallet.start_threads(network) print_msg("Recovering wallet...") wallet.synchronize() - wallet.restore(lambda x: x) + wallet.wait_until_synchronized() msg = "Recovery successful" if wallet.is_found() else "Found no history for this wallet" else: msg = "This wallet was restored offline. It may contain more addresses than displayed." t@@ -247,6 +247,7 @@ def run_command(config, network, password): # start threads if wallet and network: wallet.start_threads(network) + wallet.wait_until_synchronized() # arguments passed to function args = map(lambda x: config.get(x), cmd.params) # decode json arguments DIR diff --git a/gui/android.py b/gui/android.py t@@ -953,7 +953,7 @@ class ElectrumGui: droid.dialogShow() wallet.start_threads(network) if action == 'restore': - wallet.restore(lambda x: None) + wallet.wait_until_synchronized() else: wallet.synchronize() droid.dialogDismiss() DIR diff --git a/gui/gtk.py b/gui/gtk.py t@@ -1357,8 +1357,8 @@ class ElectrumGui(): dialog.show() def recover_thread( wallet, dialog ): - wallet.restore(lambda x:x) - GObject.idle_add( dialog.destroy ) + wallet.wait_until_synchronized() + GObject.idle_add(dialog.destroy) thread.start_new_thread( recover_thread, ( wallet, dialog ) ) r = dialog.run() DIR diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py t@@ -549,7 +549,7 @@ class InstallWizard(QDialog): wallet.start_threads(self.network) if action == 'restore': - self.waiting_dialog(lambda: wallet.restore(self.waiting_label.setText)) + self.waiting_dialog(lambda: wallet.wait_until_synchronized(self.waiting_label.setText)) if self.network: msg = _("Recovery successful") if wallet.is_found() else _("No transactions found for this seed") else: DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -314,11 +314,6 @@ class Abstract_Wallet(PrintError): def is_up_to_date(self): with self.lock: return self.up_to_date - def update(self): - self.up_to_date = False - while not self.is_up_to_date(): - time.sleep(0.1) - def is_imported(self, addr): account = self.accounts.get(IMPORTED_ACCOUNT) if account: t@@ -1135,21 +1130,23 @@ class Abstract_Wallet(PrintError): self.verifier = None self.storage.put('stored_height', self.get_local_height(), True) - def restore(self, callback): + def wait_until_synchronized(self, callback=None): from i18n import _ def wait_for_wallet(): self.set_up_to_date(False) while not self.is_up_to_date(): - msg = "%s\n%s %d"%( - _("Please wait..."), - _("Addresses generated:"), - len(self.addresses(True))) - apply(callback, (msg,)) + if callback: + msg = "%s\n%s %d"%( + _("Please wait..."), + _("Addresses generated:"), + len(self.addresses(True))) + apply(callback, (msg,)) time.sleep(0.1) def wait_for_network(): while not self.network.is_connected(): - msg = "%s \n" % (_("Connecting...")) - apply(callback, (msg,)) + if callback: + msg = "%s \n" % (_("Connecting...")) + apply(callback, (msg,)) time.sleep(0.1) # wait until we are connected, because the user might have selected another server if self.network: