From bfce02b5c20adbbe5c8799dded0844618a506946 Mon Sep 17 00:00:00 2001 From: selsta Date: Fri, 5 Jun 2026 11:41:51 +0200 Subject: libwalletqt: start wallet refresh worker lazily --- src/libwalletqt/Wallet.cpp | 15 ++++++++++++++- src/libwalletqt/Wallet.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index a5ac6925..298db6eb 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -620,6 +620,19 @@ void Wallet::startRefresh() qDebug() << "Starting refresh"; m_refreshEnabled = true; m_refreshNow = true; + + if (!m_refreshThreadStarted.exchange(true)) + { + try + { + startRefreshThread(); + } + catch (...) + { + m_refreshThreadStarted.store(false); + throw; + } + } } void Wallet::pauseRefresh() @@ -1182,6 +1195,7 @@ Wallet::Wallet(Monero::Wallet *w, QObject *parent) , m_refreshNow(false) , m_refreshEnabled(false) , m_refreshing(false) + , m_refreshThreadStarted(false) , m_scheduler(this) { m_walletListener = new WalletListenerImpl(this); @@ -1195,7 +1209,6 @@ Wallet::Wallet(Monero::Wallet *w, QObject *parent) m_daemonUsername = ""; m_daemonPassword = ""; - startRefreshThread(); } Wallet::~Wallet() diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index a5bb913c..e41540ea 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -493,6 +493,7 @@ private: std::atomic m_refreshNow; std::atomic m_refreshEnabled; std::atomic m_refreshing; + std::atomic m_refreshThreadStarted; WalletListenerImpl *m_walletListener; FutureScheduler m_scheduler; }; -- cgit v1.2.3