From 4f3ba8517a7e8c8f823617149d12e72cb32c8d0d Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Tue, 29 Mar 2022 22:08:26 +0200 Subject: wallet, refactor: Add wallet::NotifyWalletLoaded() function This change is a prerequisite for the following bugfix. Github-Pull: bitcoin/bitcoin#24711 Rebased-From: aeee419c6aae085cacd75343c1ce23486b2b8916 --- src/wallet/wallet.cpp | 15 +++++++++------ src/wallet/wallet.h | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 6cf9f9ce74..2826217932 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -167,6 +167,14 @@ std::unique_ptr HandleLoadWallet(WalletContext& context, Lo return interfaces::MakeHandler([&context, it] { LOCK(context.wallets_mutex); context.wallet_load_fns.erase(it); }); } +void NotifyWalletLoaded(WalletContext& context, const std::shared_ptr& wallet) +{ + LOCK(context.wallets_mutex); + for (auto& load_wallet : context.wallet_load_fns) { + load_wallet(interfaces::MakeWallet(context, wallet)); + } +} + static Mutex g_loading_wallet_mutex; static Mutex g_wallet_release_mutex; static std::condition_variable g_wallet_release_cv; @@ -2898,12 +2906,7 @@ std::shared_ptr CWallet::Create(WalletContext& context, const std::stri return nullptr; } - { - LOCK(context.wallets_mutex); - for (auto& load_wallet : context.wallet_load_fns) { - load_wallet(interfaces::MakeWallet(context, walletInstance)); - } - } + NotifyWalletLoaded(context, walletInstance); { LOCK(walletInstance->cs_wallet); diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index e2c5c69c91..76d2371f7f 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -68,6 +68,7 @@ std::shared_ptr LoadWallet(WalletContext& context, const std::string& n std::shared_ptr CreateWallet(WalletContext& context, const std::string& name, std::optional load_on_start, DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error, std::vector& warnings); std::shared_ptr RestoreWallet(WalletContext& context, const fs::path& backup_file, const std::string& wallet_name, std::optional load_on_start, DatabaseStatus& status, bilingual_str& error, std::vector& warnings); std::unique_ptr HandleLoadWallet(WalletContext& context, LoadWalletFn load_wallet); +void NotifyWalletLoaded(WalletContext& context, const std::shared_ptr& wallet); std::unique_ptr MakeWalletDatabase(const std::string& name, const DatabaseOptions& options, DatabaseStatus& status, bilingual_str& error); //! -paytxfee default -- cgit v1.2.3