diff --git a/src/core/atcore.cpp b/src/core/atcore.cpp --- a/src/core/atcore.cpp +++ b/src/core/atcore.cpp @@ -255,7 +255,9 @@ } else { loadFirmwarePlugin(fwName); } - d->serialTimer.stop(); + if (d->serialTimer.isActive()) { + d->serialTimer.stop(); + } return true; } qCDebug(ATCORE_CORE) << "Failed to open device for Read / Write."; @@ -314,9 +316,14 @@ { newTime = std::max(newTime, 0); if (newTime != d->serialTimer.interval()) { + d->serialTimer.setInterval(newTime); emit serialTimerIntervalChanged(newTime); } - d->serialTimer.start(newTime); + if (newTime == 0 && d->serialTimer.isActive()) { + d->serialTimer.stop(); + } else { + d->serialTimer.start(newTime); + } } int AtCore::temperatureTimerInterval() const @@ -328,9 +335,14 @@ { newTime = std::max(newTime, 0); if (newTime != d->temperatureTimer.interval()) { + d->temperatureTimer.setInterval(newTime); emit temperatureTimerIntervalChanged(newTime); } - d->temperatureTimer.start(newTime); + if (!newTime && d->temperatureTimer.isActive()) { + d->temperatureTimer.stop(); + } else { + d->temperatureTimer.start(newTime); + } } void AtCore::newMessage(const QByteArray &message) @@ -468,7 +480,9 @@ if (state == AtCore::STATES::FINISHEDPRINT && d->sdCardPrinting) { //Clean up the sd card print d->sdCardPrinting = false; - d->sdPrintProgressTimer.stop(); + if (d->sdPrintProgressTimer.isActive()) { + d->sdPrintProgressTimer.stop(); + } } emit stateChanged(d->printerState); } diff --git a/src/widgets/statuswidget.cpp b/src/widgets/statuswidget.cpp --- a/src/widgets/statuswidget.cpp +++ b/src/widgets/statuswidget.cpp @@ -95,7 +95,9 @@ printTime->start(); printTimer->start(); } else { - printTimer->stop(); + if (printTimer->isActive()) { + printTimer->stop(); + } spacer->changeSize(10, 20, QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); } }