Protect against emitting inactivityDetected() while it'is still processed.

This commit is contained in:
Felix Geyer 2015-07-13 21:25:48 +02:00
parent 721bec9794
commit 8ad48d6774
2 changed files with 9 additions and 0 deletions

View File

@ -67,7 +67,14 @@ bool InactivityTimer::eventFilter(QObject* watched, QEvent* event)
void InactivityTimer::timeout()
{
// make sure we don't emit the signal a second time while it's still processed
if (!m_emitMutx.tryLock()) {
return;
}
if (m_active && !m_timer->isActive()) {
Q_EMIT inactivityDetected();
}
m_emitMutx.unlock();
}

View File

@ -18,6 +18,7 @@
#ifndef KEEPASSX_INACTIVITYTIMER_H
#define KEEPASSX_INACTIVITYTIMER_H
#include <QMutex>
#include <QObject>
#include "core/Global.h"
@ -46,6 +47,7 @@ private Q_SLOTS:
private:
QTimer* m_timer;
bool m_active;
QMutex m_emitMutx;
};
#endif // KEEPASSX_INACTIVITYTIMER_H