aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2019-06-05 22:33:57 -0500
committerluigi1111 <luigi1111w@gmail.com>2019-06-05 22:33:57 -0500
commit189f9057854b788780899f183fd96193024c7098 (patch)
treee3fad3136cfa5021dfb6608a075751ab280b0b68
parent477bce611720c8b8e383241879c9365df8d6b585 (diff)
parent73a3549e097785bdecb675a83c07716535fbd751 (diff)
downloadmonzero-gui-189f9057854b788780899f183fd96193024c7098.tar.gz
monzero-gui-189f9057854b788780899f183fd96193024c7098.tar.xz
monzero-gui-189f9057854b788780899f183fd96193024c7098.zip
Merge pull request #2182
73a3549 WalletManager: non-blocking mining status updates (xiphon)
-rw-r--r--pages/Mining.qml12
-rw-r--r--src/libwalletqt/WalletManager.cpp7
-rw-r--r--src/libwalletqt/WalletManager.h6
3 files changed, 22 insertions, 3 deletions
diff --git a/pages/Mining.qml b/pages/Mining.qml
index e45cfaf1..e147f43d 100644
--- a/pages/Mining.qml
+++ b/pages/Mining.qml
@@ -258,14 +258,18 @@ Rectangle {
}
}
- function update() {
+ function onMiningStatus(isMining) {
var daemonReady = walletManager.isDaemonLocal(appWindow.currentDaemonAddress) && appWindow.daemonSynced
- appWindow.isMining = walletManager.isMining()
+ appWindow.isMining = isMining;
updateStatusText()
startSoloMinerButton.enabled = !appWindow.isMining && daemonReady
stopSoloMinerButton.enabled = !startSoloMinerButton.enabled && daemonReady
}
+ function update() {
+ walletManager.miningStatusAsync();
+ }
+
MoneroComponents.StandardDialog {
id: errorPopup
cancelVisible: false
@@ -286,4 +290,8 @@ Rectangle {
function onPageClosed() {
timer.running = false
}
+
+ Component.onCompleted: {
+ walletManager.miningStatus.connect(onMiningStatus);
+ }
}
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp
index 124622db..b6581f25 100644
--- a/src/libwalletqt/WalletManager.cpp
+++ b/src/libwalletqt/WalletManager.cpp
@@ -389,6 +389,13 @@ bool WalletManager::isMining() const
return m_pimpl->isMining();
}
+void WalletManager::miningStatusAsync() const
+{
+ QtConcurrent::run([this] {
+ emit miningStatus(isMining());
+ });
+}
+
bool WalletManager::startMining(const QString &address, quint32 threads, bool backgroundMining, bool ignoreBattery)
{
if(threads == 0)
diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h
index ab4e4af7..6b7f8c3e 100644
--- a/src/libwalletqt/WalletManager.h
+++ b/src/libwalletqt/WalletManager.h
@@ -159,7 +159,7 @@ public:
Q_INVOKABLE bool localDaemonSynced() const;
Q_INVOKABLE bool isDaemonLocal(const QString &daemon_address) const;
- Q_INVOKABLE bool isMining() const;
+ Q_INVOKABLE void miningStatusAsync() const;
Q_INVOKABLE bool startMining(const QString &address, quint32 threads, bool backgroundMining, bool ignoreBattery);
Q_INVOKABLE bool stopMining();
@@ -201,12 +201,16 @@ signals:
void deviceButtonPressed();
void walletClosed(const QString &walletAddress);
void checkUpdatesComplete(const QString &result) const;
+ void miningStatus(bool isMining) const;
public slots:
private:
friend class WalletPassphraseListenerImpl;
explicit WalletManager(QObject *parent = 0);
+
+ bool isMining() const;
+
static WalletManager * m_instance;
Monero::WalletManager * m_pimpl;
mutable QMutex m_mutex;