diff --git a/src/Camera/QGCCameraControl.cc b/src/Camera/QGCCameraControl.cc index 11b25c3..17c3b55 100644 --- a/src/Camera/QGCCameraControl.cc +++ b/src/Camera/QGCCameraControl.cc @@ -984,9 +984,24 @@ QGCCameraControl::_updateRanges(Fact* pFact) //-- Parameter update requests if(_requestUpdates.contains(pFact->name())) { foreach(QString param, _requestUpdates[pFact->name()]) { - _paramIO[param]->paramRequest(); + if(!_updatesToRequest.contains(param)) { + _updatesToRequest << param; + } } } + if(_updatesToRequest.size()) { + QTimer::singleShot(500, this, &QGCCameraControl::_requestParamUpdates); + } +} + +//----------------------------------------------------------------------------- +void +QGCCameraControl::_requestParamUpdates() +{ + foreach(QString param, _updatesToRequest) { + _paramIO[param]->paramRequest(); + } + _updatesToRequest.clear(); } //----------------------------------------------------------------------------- diff --git a/src/Camera/QGCCameraControl.h b/src/Camera/QGCCameraControl.h index b5ebb54..2881601 100644 --- a/src/Camera/QGCCameraControl.h +++ b/src/Camera/QGCCameraControl.h @@ -166,6 +166,7 @@ private slots: void _initWhenReady (); void _requestCameraSettings (); void _requestAllParameters (); + void _requestParamUpdates (); void _requestCaptureStatus (); void _requestStorageInfo (); void _downloadFinished (); @@ -219,4 +220,5 @@ protected: int _captureInfoRetries; //-- Parameters that require a full update QMap _requestUpdates; + QStringList _updatesToRequest; };