From 87141b47a74d84c3d65031076ba1af09d5c291e2 Mon Sep 17 00:00:00 2001 From: jmt Date: Sun, 18 Oct 2009 19:59:01 +0000 Subject: [PATCH] Fix route-manager / GPS sequencing interaction; tied properties need help to fire listeners. --- src/Autopilot/route_mgr.cxx | 7 ++++--- src/Autopilot/route_mgr.hxx | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Autopilot/route_mgr.cxx b/src/Autopilot/route_mgr.cxx index bd6b47e07..0ef72afb5 100644 --- a/src/Autopilot/route_mgr.cxx +++ b/src/Autopilot/route_mgr.cxx @@ -142,7 +142,8 @@ void FGRouteMgr::init() { _edited = fgGetNode(RM "signals/edited", true); _finished = fgGetNode(RM "signals/finished", true); - rm->tie("current-wp", SGRawValueMethods + _currentWpt = fgGetNode(RM "current-wp", true); + _currentWpt->tie(SGRawValueMethods (*this, &FGRouteMgr::currentWaypoint, &FGRouteMgr::jumpToIndex)); // temporary distance / eta calculations, for backward-compatability @@ -519,7 +520,7 @@ bool FGRouteMgr::activate() add_waypoint(SGWayPoint(destApt->geod(), destApt->ident(), destApt->name())); } - _route->set_current(0); + _route->set_current(1); double routeDistanceNm = _route->total_distance() * SG_METER_TO_NM; totalDistance->setDoubleValue(routeDistanceNm); @@ -531,7 +532,6 @@ bool FGRouteMgr::activate() } active->setBoolValue(true); - sequence(); // sequence will sync up wp0, wp1 and current-wp SG_LOG(SG_AUTOPILOT, SG_INFO, "route-manager, activate route ok"); return true; } @@ -550,6 +550,7 @@ void FGRouteMgr::sequence() _route->increment_current(); currentWaypointChanged(); + _currentWpt->fireValueChanged(); } bool FGRouteMgr::checkFinished() diff --git a/src/Autopilot/route_mgr.hxx b/src/Autopilot/route_mgr.hxx index 2cc6b42f9..31a504133 100644 --- a/src/Autopilot/route_mgr.hxx +++ b/src/Autopilot/route_mgr.hxx @@ -70,6 +70,8 @@ private: SGPropertyNode_ptr _pathNode; + SGPropertyNode_ptr _currentWpt; + /** * Signal property to notify people that the route was edited -- 2.39.5