diff options
| author | selsta <selsta@sent.at> | 2026-06-05 11:41:51 +0200 |
|---|---|---|
| committer | selsta <selsta@sent.at> | 2026-06-05 19:34:05 +0200 |
| commit | bfce02b5c20adbbe5c8799dded0844618a506946 (patch) | |
| tree | a2fe4817b0aa2e4e5cdb844a9ae96614394ed173 | |
| parent | 43f980c45d6f125b0e9026cff41b9ba302d52f77 (diff) | |
| download | monzero-gui-bfce02b5c20adbbe5c8799dded0844618a506946.tar.gz monzero-gui-bfce02b5c20adbbe5c8799dded0844618a506946.tar.xz monzero-gui-bfce02b5c20adbbe5c8799dded0844618a506946.zip | |
libwalletqt: start wallet refresh worker lazily
| -rw-r--r-- | src/libwalletqt/Wallet.cpp | 15 | ||||
| -rw-r--r-- | src/libwalletqt/Wallet.h | 1 |
2 files changed, 15 insertions, 1 deletions
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<bool> m_refreshNow; std::atomic<bool> m_refreshEnabled; std::atomic<bool> m_refreshing; + std::atomic<bool> m_refreshThreadStarted; WalletListenerImpl *m_walletListener; FutureScheduler m_scheduler; }; |
