summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSergio Ahumada <sahumada@blackberry.com>2014-06-14 21:58:57 +0200
committerSergio Ahumada <sahumada@blackberry.com>2014-06-14 21:58:57 +0200
commit2701763c003e9d2cc59a936491ab2fa8b6ff7f74 (patch)
tree0f4782ba43d8fa5a45e629ff20bf75542dd95deb /src/plugins
parent12ac3b3b4645bf781b31ea713c111a73239c4885 (diff)
parent87b569ccc4df161e33d41f7a5f1f25eced6f65c3 (diff)
Merge remote-tracking branch 'origin/5.3' into dev
Conflicts: .qmake.conf Change-Id: Ia804a9a975baea0f971c7bea004c5ce403d1adee
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java3
-rw-r--r--src/plugins/sensors/android/src/androidaccelerometer.cpp3
-rw-r--r--src/plugins/sensors/android/src/androidjnisensors.cpp2
-rw-r--r--src/plugins/sensors/ios/iosaccelerometer.mm3
-rw-r--r--src/plugins/sensors/ios/iosgyroscope.mm3
-rw-r--r--src/plugins/sensors/ios/iosmagnetometer.mm6
6 files changed, 20 insertions, 0 deletions
diff --git a/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java b/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java
index 5507b07b..efd1ff6d 100644
--- a/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java
+++ b/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java
@@ -73,6 +73,9 @@ public class QtSensors implements SensorEventListener
{
try {
Sensor s = m_sensorManager.getDefaultSensor(sensorType);
+ if (s == null) {
+ return null;
+ }
return s.getName() + " " + s.getVendor() + " v" + s.getVersion();
} catch(Exception e) {
e.printStackTrace();
diff --git a/src/plugins/sensors/android/src/androidaccelerometer.cpp b/src/plugins/sensors/android/src/androidaccelerometer.cpp
index 76aa0278..74b3d6db 100644
--- a/src/plugins/sensors/android/src/androidaccelerometer.cpp
+++ b/src/plugins/sensors/android/src/androidaccelerometer.cpp
@@ -95,5 +95,8 @@ AndroidSensors::AndroidSensorType AndroidAccelerometer::modeToSensor(QAccelerome
break;
}
+ if (type != AndroidSensors::TYPE_ACCELEROMETER && !AndroidSensors::availableSensors().contains(type))
+ type = AndroidSensors::TYPE_ACCELEROMETER;
+
return type;
}
diff --git a/src/plugins/sensors/android/src/androidjnisensors.cpp b/src/plugins/sensors/android/src/androidjnisensors.cpp
index af39e0b6..87889a89 100644
--- a/src/plugins/sensors/android/src/androidjnisensors.cpp
+++ b/src/plugins/sensors/android/src/androidjnisensors.cpp
@@ -113,6 +113,8 @@ namespace AndroidSensors
jstring jstr = static_cast<jstring>(aenv.jniEnv->CallStaticObjectMethod(sensorsClass,
getSensorDescriptionMethodId,
jint(sensor)));
+ if (!jstr)
+ return QString();
const jchar *pstr = aenv.jniEnv->GetStringChars(jstr, 0);
QString ret(reinterpret_cast<const QChar *>(pstr), aenv.jniEnv->GetStringLength(jstr));
aenv.jniEnv->ReleaseStringChars(jstr, pstr);
diff --git a/src/plugins/sensors/ios/iosaccelerometer.mm b/src/plugins/sensors/ios/iosaccelerometer.mm
index 5f9c0f16..ef215465 100644
--- a/src/plugins/sensors/ios/iosaccelerometer.mm
+++ b/src/plugins/sensors/ios/iosaccelerometer.mm
@@ -77,6 +77,9 @@ void IOSAccelerometer::timerEvent(QTimerEvent *)
// Convert from NSTimeInterval to microseconds and G to m/s2, and flip axes:
CMAccelerometerData *data = m_motionManager.accelerometerData;
CMAcceleration acc = data.acceleration;
+ // skip update if NaN
+ if (acc.x != acc.x || acc.y != acc.y || acc.z != acc.z)
+ return;
static const qreal G = 9.8066;
m_reading.setTimestamp(quint64(data.timestamp * 1e6));
m_reading.setX(qreal(acc.x) * G * -1);
diff --git a/src/plugins/sensors/ios/iosgyroscope.mm b/src/plugins/sensors/ios/iosgyroscope.mm
index 8dfa3a4a..751786ef 100644
--- a/src/plugins/sensors/ios/iosgyroscope.mm
+++ b/src/plugins/sensors/ios/iosgyroscope.mm
@@ -75,6 +75,9 @@ void IOSGyroscope::timerEvent(QTimerEvent *)
// Convert NSTimeInterval to microseconds and radians to degrees:
CMGyroData *data = m_motionManager.gyroData;
CMRotationRate rate = data.rotationRate;
+ // skip update if NaN
+ if (rate.x != rate.x || rate.y != rate.y || rate.z != rate.z)
+ return;
m_reading.setTimestamp(quint64(data.timestamp * 1e6));
m_reading.setX((qreal(rate.x) / M_PI) * 180);
m_reading.setY((qreal(rate.y) / M_PI) * 180);
diff --git a/src/plugins/sensors/ios/iosmagnetometer.mm b/src/plugins/sensors/ios/iosmagnetometer.mm
index 95f85ae1..3cd8b10e 100644
--- a/src/plugins/sensors/ios/iosmagnetometer.mm
+++ b/src/plugins/sensors/ios/iosmagnetometer.mm
@@ -91,6 +91,9 @@ void IOSMagnetometer::timerEvent(QTimerEvent *)
CMDeviceMotion *deviceMotion = m_motionManager.deviceMotion;
CMCalibratedMagneticField calibratedField = deviceMotion.magneticField;
field = calibratedField.field;
+ // skip update if NaN
+ if (field.x != field.x || field.y != field.y || field.z != field.z)
+ return;
m_reading.setTimestamp(quint64(deviceMotion.timestamp * 1e6));
switch (calibratedField.accuracy) {
@@ -110,6 +113,9 @@ void IOSMagnetometer::timerEvent(QTimerEvent *)
} else {
CMMagnetometerData *data = m_motionManager.magnetometerData;
field = data.magneticField;
+ // skip update if NaN
+ if (field.x != field.x || field.y != field.y || field.z != field.z)
+ return;
m_reading.setTimestamp(quint64(data.timestamp * 1e6));
m_reading.setCalibrationLevel(1.0);
}