diff --git a/src/Camera/QGCCameraControl.cc b/src/Camera/QGCCameraControl.cc index 11b25c3a03bb3699ca2b2c6913688c1e4442b37f..17c3b55b070648a458cd65d10ce2f040c32e774b 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 b5ebb54ea3963ab4dd9793fa42611a5f9d2e0fb5..2881601f619c67bbce02cd7db8daa2249967ef8e 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; };