From 8fdb52f5032885c8c7396ce884e8b6f07e45817c Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sun, 25 Oct 2015 13:28:52 -0700 Subject: [PATCH] Fix signalling --- src/Vehicle/Vehicle.cc | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 1991995ea..f97a7ed50 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -202,17 +202,32 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes void Vehicle::_handleHomePosition(mavlink_message_t& message) { + bool emitHomePositionChanged = false; + bool emitHomePositionAvailableChanged = false; + mavlink_home_position_t homePos; mavlink_msg_home_position_decode(&message, &homePos); - - _homePosition.setLatitude(homePos.latitude / 10000000.0); - _homePosition.setLongitude(homePos.longitude / 10000000.0); - _homePosition.setAltitude(homePos.altitude / 1000.0); + + QGeoCoordinate newHomePosition (homePos.latitude / 10000000.0, + homePos.longitude / 10000000.0, + homePos.altitude / 1000.0); + if (newHomePosition != _homePosition) { + emitHomePositionChanged = true; + _homePosition = newHomePosition; + } + + if (!_homePositionAvailable) { + emitHomePositionAvailableChanged = true; + } _homePositionAvailable = true; - - emit homePositionChanged(_homePosition); - emit homePositionAvailableChanged(true); + + if (emitHomePositionChanged) { + emit homePositionChanged(_homePosition); + } + if (emitHomePositionAvailableChanged) { + emit homePositionAvailableChanged(true); + } } void Vehicle::_handleHeartbeat(mavlink_message_t& message) -- 2.22.0