Commit f9d0324d2a8e4e1ec704c8b0da1e73d9ae991dae

ckolivas 2012-07-11T22:47:03

Check for work restart after the hashmeter is invoked for we lose the hashes otherwise contributed in the count.

diff --git a/cgminer.c b/cgminer.c
index aae5991..59b2111 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -4101,22 +4101,6 @@ void *miner_thread(void *userdata)
 
 			gettimeofday(&getwork_start, NULL);
 
-			if (unlikely(mythr->work_restart)) {
-
-				/* Apart from device_thread 0, we stagger the
-				 * starting of every next thread to try and get
-				 * all devices busy before worrying about
-				 * getting work for their extra threads */
-				if (!primary) {
-					struct timespec rgtp;
-
-					rgtp.tv_sec = 0;
-					rgtp.tv_nsec = 250 * mythr->device_thread * 1000000;
-					nanosleep(&rgtp, NULL);
-				}
-				break;
-			}
-
 			if (unlikely(!hashes)) {
 				applog(LOG_ERR, "%s %d failure, disabling!", api->name, cgpu->device_id);
 				cgpu->deven = DEV_DISABLED;
@@ -4183,6 +4167,21 @@ void *miner_thread(void *userdata)
 				tv_lastupdate = tv_end;
 			}
 
+			if (unlikely(mythr->work_restart)) {
+				/* Apart from device_thread 0, we stagger the
+				 * starting of every next thread to try and get
+				 * all devices busy before worrying about
+				 * getting work for their extra threads */
+				if (!primary) {
+					struct timespec rgtp;
+
+					rgtp.tv_sec = 0;
+					rgtp.tv_nsec = 250 * mythr->device_thread * 1000000;
+					nanosleep(&rgtp, NULL);
+				}
+				break;
+			}
+
 			if (unlikely(mythr->pause || cgpu->deven != DEV_ENABLED))
 				mt_disable(mythr, thr_id, api);