nav: fix receiving navRoute while map is loading (#22929)

pull/22695/head
Willem Melching 3 years ago committed by GitHub
parent 241a0824d9
commit 9f423a93cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      selfdrive/ui/qt/maps/map.cc
  2. 1
      selfdrive/ui/qt/maps/map.h

@ -25,6 +25,9 @@ MapWindow::MapWindow(const QMapboxGLSettings &settings) :
m_settings(settings), velocity_filter(0, 10, 0.1) { m_settings(settings), velocity_filter(0, 10, 0.1) {
sm = new SubMaster({"liveLocationKalman", "navInstruction", "navRoute"}); sm = new SubMaster({"liveLocationKalman", "navInstruction", "navRoute"});
// Connect now, so any navRoutes sent while the map is initializing are not dropped
sm->update(0);
timer = new QTimer(this); timer = new QTimer(this);
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timerUpdate())); QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timerUpdate()));
timer->start(100); timer->start(100);
@ -50,6 +53,7 @@ MapWindow::MapWindow(const QMapboxGLSettings &settings) :
} }
grabGesture(Qt::GestureType::PinchGesture); grabGesture(Qt::GestureType::PinchGesture);
qDebug() << "MapWindow initialized";
} }
MapWindow::~MapWindow() { MapWindow::~MapWindow() {
@ -178,7 +182,8 @@ void MapWindow::timerUpdate() {
} }
} }
if (sm->updated("navRoute")) { if (sm->rcv_frame("navRoute") != route_rcv_frame) {
qWarning() << "Got new navRoute from navd";
auto route = (*sm)["navRoute"].getNavRoute(); auto route = (*sm)["navRoute"].getNavRoute();
auto route_points = capnp_coordinate_list_to_collection(route.getCoordinates()); auto route_points = capnp_coordinate_list_to_collection(route.getCoordinates());
QMapbox::Feature feature(QMapbox::Feature::LineStringType, route_points, {}, {}); QMapbox::Feature feature(QMapbox::Feature::LineStringType, route_points, {}, {});
@ -193,6 +198,7 @@ void MapWindow::timerUpdate() {
setVisible(true); // Show map on destination set/change setVisible(true); // Show map on destination set/change
allow_open = false; allow_open = false;
} }
route_rcv_frame = sm->rcv_frame("navRoute");
} }
} }

@ -114,6 +114,7 @@ private:
MapETA* map_eta; MapETA* map_eta;
void clearRoute(); void clearRoute();
uint64_t route_rcv_frame = 0;
private slots: private slots:
void timerUpdate(); void timerUpdate();

Loading…
Cancel
Save