Files
pilotclient/src/blackmisc/digestsignal.cpp
Lars Toenning bcc4bdd31e Add SPDX identifiers for REUSE compliance
Co-authored-by: Mat Sutcliffe <oktal3700@gmail.com>
2023-10-03 09:29:49 +02:00

45 lines
1.2 KiB
C++

// SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
#include "blackmisc/digestsignal.h"
#include "blackmisc/threadutils.h"
#include <QPointer>
namespace BlackMisc
{
void CDigestSignal::inputSignal()
{
if (!CThreadUtils::isInThisThread(this))
{
// call in correct thread
const QPointer<CDigestSignal> myself(this);
QTimer::singleShot(0, this, [=] {
if (!myself) { return; }
this->inputSignal();
});
return;
}
m_timer.start(); // start or restart
m_inputsCount++;
if (m_inputsCount >= m_maxInputsPerDigest)
{
timerTimeout();
}
}
void CDigestSignal::timerTimeout()
{
m_timer.stop();
m_inputsCount = 0;
emit this->digestSignal();
}
void CDigestSignal::init(int maxDelayMs)
{
QObject::connect(&m_timer, &QTimer::timeout, this, &CDigestSignal::timerTimeout);
m_timer.setSingleShot(true);
m_timer.setInterval(maxDelayMs);
}
} // namespace