Slow work of QGC with a connected Mavlink UAV with the activated USB joystick

The test is done on Windows and Android. Version 3.2.5
When a Mavlink UAV is connected, with the activated USB joystick there is a very strong boost of the program. This causes a constant loss of communication with the UAV and the message: manual control lost.

Having spent some time studying the code and saw that each time the user moves the map, the central coordinate and zoom level are stored in the configuration file, and this is read every time to change the position of the map on the screen. When you move the map then this reading / writing is performed many times per second and the system is working incorrectly.

File where the bad code is located:
src / QmlControls / QGroundControlQmlGlobal.cc:
Functions:

  • setFlightMapPosition
  • flightMapPosition
  • flightMapZoom
  • setFlightMapZoom

This is a very wrong approach in terms of programming !!!

If you redefine these functions in such a way that the map coordinate and zoom level are stored simply in the variable, then the speed grows several times and the map becomes comfortable. And in the configuration file, you can save the coordinate when you exit the program.

Now there is a new problem.
Whenever a UAV is armed and the joystick is activated at that time, any call to the configuration file for reading the settings or recording - causes an interrupt and the UAV issues a manual control lost error.

2 Likes

Thanks for sharing. Would you be interested in opening a pull request to fix these issues? https://github.com/mavlink/qgroundcontrol

The main QGC developer (Don) is travelling at the moment, but if you tag me I’ll review and merge.

I did it. Please review the changes.