aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
};