From 793a2454adfb27abaf2403e4461b2a1f039bdea3 Mon Sep 17 00:00:00 2001
From: SChernykh <sergey.v.chernykh@gmail.com>
Date: Sat, 10 Oct 2020 17:00:30 +0200
Subject: [PATCH] Fixed total hashrate update

Don't add data points where one of the threads doesn't have hashrate data yet.
---
 src/backend/common/Workers.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/backend/common/Workers.cpp b/src/backend/common/Workers.cpp
index 89c44a77b..419d4fb83 100644
--- a/src/backend/common/Workers.cpp
+++ b/src/backend/common/Workers.cpp
@@ -143,6 +143,7 @@ void xmrig::Workers<T>::tick(uint64_t)
         return;
     }
 
+    bool totalAvailable = true;
     uint64_t totalHashCount = 0;
 
     for (Thread<T> *handle : m_workers) {
@@ -150,11 +151,16 @@ void xmrig::Workers<T>::tick(uint64_t)
             uint64_t hashCount, timeStamp;
             handle->worker()->getHashrateData(hashCount, timeStamp);
             d_ptr->hashrate->add(handle->id() + 1, hashCount, timeStamp);
-            totalHashCount += handle->worker()->rawHashes();
+
+            const uint64_t n = handle->worker()->rawHashes();
+            if (n == 0) {
+                totalAvailable = false;
+            }
+            totalHashCount += n;
         }
     }
 
-    if (totalHashCount > 0) {
+    if (totalAvailable) {
         d_ptr->hashrate->add(0, totalHashCount, Chrono::steadyMSecs());
     }
 }