Browse Source

Save map position using a timer to prevent FPS decrease (#10070)

Based on commit d0008a5f307086227197bff1ba72e6ff1090eeab. See #9220.
QGC4.4
aib 3 years ago committed by Ramon Roche
parent
commit
aeed3d0c8f
  1. 27
      src/QmlControls/QGroundControlQmlGlobal.cc
  2. 1
      src/QmlControls/QGroundControlQmlGlobal.h

27
src/QmlControls/QGroundControlQmlGlobal.cc

@ -36,6 +36,26 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app, QGCToolbox @@ -36,6 +36,26 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app, QGCToolbox
_coord.setLatitude(settings.value(_flightMapPositionLatitudeSettingsKey, _coord.latitude()).toDouble());
_coord.setLongitude(settings.value(_flightMapPositionLongitudeSettingsKey, _coord.longitude()).toDouble());
_zoom = settings.value(_flightMapZoomSettingsKey, _zoom).toDouble();
_flightMapPositionSettledTimer.setSingleShot(true);
_flightMapPositionSettledTimer.setInterval(1000);
connect(&_flightMapPositionSettledTimer, &QTimer::timeout, [](){
// When they settle, save flightMapPosition and Zoom to the config file
QSettings settings;
settings.beginGroup(_flightMapPositionSettingsGroup);
settings.setValue(_flightMapPositionLatitudeSettingsKey, _coord.latitude());
settings.setValue(_flightMapPositionLongitudeSettingsKey, _coord.longitude());
settings.setValue(_flightMapZoomSettingsKey, _zoom);
});
connect(this, &QGroundControlQmlGlobal::flightMapPositionChanged, this, [this](QGeoCoordinate){
if (!_flightMapPositionSettledTimer.isActive()) {
_flightMapPositionSettledTimer.start();
}
});
connect(this, &QGroundControlQmlGlobal::flightMapZoomChanged, this, [this](double){
if (!_flightMapPositionSettledTimer.isActive()) {
_flightMapPositionSettledTimer.start();
}
});
}
QGroundControlQmlGlobal::~QGroundControlQmlGlobal()
@ -228,10 +248,6 @@ void QGroundControlQmlGlobal::setFlightMapPosition(QGeoCoordinate& coordinate) @@ -228,10 +248,6 @@ void QGroundControlQmlGlobal::setFlightMapPosition(QGeoCoordinate& coordinate)
if (coordinate != flightMapPosition()) {
_coord.setLatitude(coordinate.latitude());
_coord.setLongitude(coordinate.longitude());
QSettings settings;
settings.beginGroup(_flightMapPositionSettingsGroup);
settings.setValue(_flightMapPositionLatitudeSettingsKey, _coord.latitude());
settings.setValue(_flightMapPositionLongitudeSettingsKey, _coord.longitude());
emit flightMapPositionChanged(coordinate);
}
}
@ -240,9 +256,6 @@ void QGroundControlQmlGlobal::setFlightMapZoom(double zoom) @@ -240,9 +256,6 @@ void QGroundControlQmlGlobal::setFlightMapZoom(double zoom)
{
if (zoom != flightMapZoom()) {
_zoom = zoom;
QSettings settings;
settings.beginGroup(_flightMapPositionSettingsGroup);
settings.setValue(_flightMapZoomSettingsKey, _zoom);
emit flightMapZoomChanged(zoom);
}
}

1
src/QmlControls/QGroundControlQmlGlobal.h

@ -275,4 +275,5 @@ private: @@ -275,4 +275,5 @@ private:
static QGeoCoordinate _coord;
static double _zoom;
QTimer _flightMapPositionSettledTimer;
};

Loading…
Cancel
Save