aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2026-06-05 11:41:51 +0200
committerselsta <selsta@sent.at>2026-06-05 19:34:05 +0200
commitbfce02b5c20adbbe5c8799dded0844618a506946 (patch)
treea2fe4817b0aa2e4e5cdb844a9ae96614394ed173
parent43f980c45d6f125b0e9026cff41b9ba302d52f77 (diff)
downloadmonzero-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.cpp15
-rw-r--r--src/libwalletqt/Wallet.h1
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;
};