From ae6022c498a03506896b67e8129905fe6e5cb184 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Mon, 24 Oct 2016 18:55:25 -0700 Subject: [PATCH] actually make the RunningMarker run on a different thread --- libraries/shared/src/RunningMarker.cpp | 21 +++++++++++++-------- libraries/shared/src/RunningMarker.h | 4 ++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/libraries/shared/src/RunningMarker.cpp b/libraries/shared/src/RunningMarker.cpp index d0d45fd517..0882b6976b 100644 --- a/libraries/shared/src/RunningMarker.cpp +++ b/libraries/shared/src/RunningMarker.cpp @@ -19,35 +19,40 @@ #include "NumericalConstants.h" #include "PathUtils.h" - RunningMarker::RunningMarker(QObject* parent, QString name) : _parent(parent), _name(name) { + qDebug() << __FUNCTION__ << "parent:" << parent << "name:" << name; } void RunningMarker::startRunningMarker() { static const int RUNNING_STATE_CHECK_IN_MSECS = MSECS_PER_SECOND; // start the nodeThread so its event loop is running - QThread* runningMarkerThread = new QThread(_parent); - runningMarkerThread->setObjectName("Running Marker Thread"); - runningMarkerThread->start(); + _runningMarkerThread = new QThread(_parent); + _runningMarkerThread->setObjectName("Running Marker Thread"); + _runningMarkerThread->start(); writeRunningMarkerFiler(); // write the first file, even before timer - QTimer* runningMarkerTimer = new QTimer(_parent); - QObject::connect(runningMarkerTimer, &QTimer::timeout, [=](){ + _runningMarkerTimer = new QTimer(); + QObject::connect(_runningMarkerTimer, &QTimer::timeout, [=](){ writeRunningMarkerFiler(); }); - runningMarkerTimer->start(RUNNING_STATE_CHECK_IN_MSECS); + //QObject::connect(_runningMarkerThread, &QThread::finished, _runningMarkerTimer, &QObject::deleteLater); + _runningMarkerTimer->start(RUNNING_STATE_CHECK_IN_MSECS); // put the time on the thread - runningMarkerTimer->moveToThread(runningMarkerThread); + _runningMarkerTimer->moveToThread(_runningMarkerThread); } RunningMarker::~RunningMarker() { deleteRunningMarkerFile(); + _runningMarkerTimer->stop(); + _runningMarkerThread->quit(); + _runningMarkerTimer->deleteLater(); + _runningMarkerThread->deleteLater(); } void RunningMarker::writeRunningMarkerFiler() { diff --git a/libraries/shared/src/RunningMarker.h b/libraries/shared/src/RunningMarker.h index ca670496a5..db90c3a166 100644 --- a/libraries/shared/src/RunningMarker.h +++ b/libraries/shared/src/RunningMarker.h @@ -14,6 +14,8 @@ #include #include +#include +#include class RunningMarker { public: @@ -30,6 +32,8 @@ protected: QObject* _parent { nullptr }; QString _name; + QThread* _runningMarkerThread { nullptr }; + QTimer* _runningMarkerTimer { nullptr }; }; #endif // hifi_RunningMarker_h