summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetalstrolch <stefan.wildemann@metalstrolche.de>2019-01-30 22:19:24 +0100
committermetalstrolch <stefan.wildemann@metalstrolche.de>2019-01-30 22:19:24 +0100
commit474e26635d92f27d4e0af1cd3c7a780c7e78fab3 (patch)
tree987c7eb96471c271e1fc4b7ef3f5379d3871e070
parent94fccd71c7228ec2de548ae35d5d3cd12c6a100a (diff)
downloadnavit-fix_qt5_vehicle.tar.gz
Fix:vehicle_qt5:Properly update position statusfix_qt5_vehicle
-rw-r--r--navit/vehicle/qt5/vehicle_qt5.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/navit/vehicle/qt5/vehicle_qt5.cpp b/navit/vehicle/qt5/vehicle_qt5.cpp
index 5771f1da7..b855d12b9 100644
--- a/navit/vehicle/qt5/vehicle_qt5.cpp
+++ b/navit/vehicle/qt5/vehicle_qt5.cpp
@@ -116,7 +116,6 @@ void QNavitGeoReceiver::positionUpdated(const QGeoPositionInfo& info) {
dbg(lvl_debug, "Got valid coordinate (lat %f, lon %f)", info.coordinate().latitude(), info.coordinate().longitude());
priv->geo.lat = info.coordinate().latitude();
priv->geo.lng = info.coordinate().longitude();
- priv->have_coords = 1;
if (info.coordinate().type() == QGeoCoordinate::Coordinate3D) {
dbg(lvl_debug, "Got valid altitude (alt %f)", info.coordinate().altitude());
priv->height = info.coordinate().altitude();
@@ -124,10 +123,17 @@ void QNavitGeoReceiver::positionUpdated(const QGeoPositionInfo& info) {
//dbg(lvl_debug, "Time %s", info.timestamp().toUTC().toString().toLatin1().data());
priv->fix_time = info.timestamp().toUTC().toTime_t();
callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
+ if(priv->have_coords != attr_position_valid_valid) {
+ priv->have_coords = attr_position_valid_valid;
+ callback_list_call_attr_0(priv->cbl, attr_position_valid);
+ }
} else {
dbg(lvl_debug, "Got invalid coordinate");
- priv->have_coords = 0;
callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
+ if(priv->have_coords != attr_position_valid_invalid) {
+ priv->have_coords = attr_position_valid_invalid;
+ callback_list_call_attr_0(priv->cbl, attr_position_valid);
+ }
}
}
@@ -185,7 +191,7 @@ static int vehicle_qt5_position_attr_get(struct vehicle_priv* priv,
break;
case attr_position_coord_geo:
attr->u.coord_geo = &priv->geo;
- if (!priv->have_coords)
+ if (priv->have_coords != attr_position_valid_valid)
return 0;
break;
case attr_position_time_iso8601:
@@ -233,7 +239,10 @@ static int vehicle_qt5_set_attr(struct vehicle_priv* priv, struct attr* attr) {
break;
case attr_position_coord_geo:
priv->geo = *attr->u.coord_geo;
- priv->have_coords = 1;
+ if(priv->have_coords != attr_position_valid_valid) {
+ priv->have_coords = attr_position_valid_valid;
+ callback_list_call_attr_0(priv->cbl, attr_position_valid);
+ }
break;
default:
break;
@@ -273,8 +282,10 @@ static struct vehicle_priv* vehicle_qt5_new_qt5(struct vehicle_methods* meth,
} else {
dbg(lvl_debug, "Using %s", ret->source->sourceName().toLatin1().data());
ret->receiver = new QNavitGeoReceiver(NULL, ret);
- ret->satellites->setUpdateInterval(1000);
- ret->satellites->startUpdates();
+ if(ret->satellites != NULL) {
+ ret->satellites->setUpdateInterval(1000);
+ ret->satellites->startUpdates();
+ }
ret->source->setUpdateInterval(500);
ret->source->startUpdates();
}