fix(mining): restore the miner after a benchmark only if it was running

Cancelling a thread benchmark always stopped and restarted the pool
miner at its pre-benchmark thread count, even when the user had not been
mining before the benchmark began. That silently started the miner on a
plain cancel or a switch to solo mode.

- A cancel now always drops the candidate-thread miner, and restarts the
  pool miner only when the user was mining before the benchmark, read
  from a snapshot taken at the start rather than the live running state
  (the benchmark sweep transiently stops the miner between candidates,
  so a live check would drop the restore).
- Callers that must not restore the miner (leaving solo mode) pass the
  new restore flag as false.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-10-13 16:00:10 -05:00
co-authored by Claude Opus 4.8
parent 13989cf268
commit fae5ef05b9
5 changed files with 28 additions and 12 deletions
+2 -2
View File
@@ -22,11 +22,11 @@ void RenderMiningTab(App* app);
bool IsMiningBenchmarkActive();
/**
* @brief Cancel a running thread benchmark and restore the miner to its pre-benchmark thread count.
* @brief Cancel a running thread benchmark and restore the miner only if it was running before the benchmark.
* Safe to call when no benchmark is active (no-op). Used when leaving the Mining tab or switching to
* solo mode so the miner isn't left stuck at a benchmark step. (L-04, L-11)
*/
void CancelMiningBenchmark(App* app);
void CancelMiningBenchmark(App* app, bool restoreMiner = true);
} // namespace ui
} // namespace dragonx