diff options
author | Lorn Potter <lorn.potter@nokia.com> | 2012-05-16 10:45:30 +1000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-14 04:18:47 +0100 |
commit | 5e2502dc7c8ab86c023b8cddb840b1728169a13d (patch) | |
tree | 83bf0d2b42accc4f5dd68fde590a6708196b9206 /src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp | |
parent | ce33c04b01fcd368c506335c2f105efbe9f4f702 (diff) |
remove the need to use QTimer and use timestamps instead.
Change-Id: I6327357de9f84df3db86d714747210fe62547818
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Diffstat (limited to 'src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp')
-rw-r--r-- | src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp index 8c9fa913..a6e8339a 100644 --- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp @@ -58,7 +58,10 @@ QSlamSensorGestureRecognizer::QSlamSensorGestureRecognizer(QObject *parent) : detecting(0), accelX(0), roll(0), - resting(0) + resting(0), + lastTimestamp(0), + lapsedTime(0), + timerActive(0) { } @@ -132,7 +135,7 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) const qreal x = reading->x(); const qreal y = reading->y(); const qreal z = reading->z(); - + quint64 timestamp = reading->timestamp(); if (qAbs(lastX - x) < SLAM_RESTING_FACTOR && qAbs(lastY - y) < SLAM_RESTING_FACTOR @@ -146,6 +149,15 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) restingList.removeLast(); restingList.insert(0, resting); + + if (timerActive && lastTimestamp > 0) + lapsedTime += (timestamp - lastTimestamp )/1000; + + if (timerActive && lapsedTime >= 250) { + doSlam(); + } + lastTimestamp = timestamp; + if (orientationReading == 0) { return; } @@ -167,7 +179,7 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) } if (detecting && qAbs(difference) > (accelRange * SLAM_DETECTION_FACTOR)) { - QTimer::singleShot(225,this,SLOT(doSlam())); + timerActive = true; } if (detecting && (qAbs(difference) < SLAM_ZERO_FACTOR && qAbs(difference) > 0)) { @@ -197,6 +209,8 @@ void QSlamSensorGestureRecognizer::doSlam() restingList.clear(); detecting = false; } + timerActive = false; + lapsedTime = 0; } QT_END_NAMESPACE |