Browse Source

Fix static object lifetime crash on iOS

QGC4.4
Don Gagne 9 years ago
parent
commit
942d404ac4
  1. 24
      src/Vehicle/Vehicle.cc
  2. 6
      src/Vehicle/Vehicle.h

24
src/Vehicle/Vehicle.cc

@ -1449,7 +1449,7 @@ const int VehicleBatteryFactGroup::_currentUnavailable = -1; @@ -1449,7 +1449,7 @@ const int VehicleBatteryFactGroup::_currentUnavailable = -1;
const double VehicleBatteryFactGroup::_temperatureUnavailable = -1.0;
const int VehicleBatteryFactGroup::_cellCountUnavailable = -1.0;
SettingsFact VehicleBatteryFactGroup::_percentRemainingAnnounceFact (_settingsGroup, _percentRemainingAnnounceFactName, FactMetaData::valueTypeInt32, _percentRemainingAnnounceDefault);
SettingsFact* VehicleBatteryFactGroup::_percentRemainingAnnounceFact = NULL;
VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent)
: FactGroup(1000, ":/json/Vehicle/BatteryFact.json", parent)
@ -1461,13 +1461,13 @@ VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent) @@ -1461,13 +1461,13 @@ VehicleBatteryFactGroup::VehicleBatteryFactGroup(QObject* parent)
, _temperatureFact (0, _temperatureFactName, FactMetaData::valueTypeDouble)
, _cellCountFact (0, _cellCountFactName, FactMetaData::valueTypeInt32)
{
_addFact(&_voltageFact, _voltageFactName);
_addFact(&_percentRemainingFact, _percentRemainingFactName);
_addFact(&_percentRemainingAnnounceFact, _percentRemainingAnnounceFactName);
_addFact(&_mahConsumedFact, _mahConsumedFactName);
_addFact(&_currentFact, _currentFactName);
_addFact(&_temperatureFact, _temperatureFactName);
_addFact(&_cellCountFact, _cellCountFactName);
_addFact(&_voltageFact, _voltageFactName);
_addFact(&_percentRemainingFact, _percentRemainingFactName);
_addFact(percentRemainingAnnounce(), _percentRemainingAnnounceFactName);
_addFact(&_mahConsumedFact, _mahConsumedFactName);
_addFact(&_currentFact, _currentFactName);
_addFact(&_temperatureFact, _temperatureFactName);
_addFact(&_cellCountFact, _cellCountFactName);
// Start out as not available
_voltageFact.setRawValue (_voltageUnavailable);
@ -1483,6 +1483,14 @@ void VehicleBatteryFactGroup::setVehicle(Vehicle* vehicle) @@ -1483,6 +1483,14 @@ void VehicleBatteryFactGroup::setVehicle(Vehicle* vehicle)
_vehicle = vehicle;
}
Fact* VehicleBatteryFactGroup::percentRemainingAnnounce(void)
{
if (!_percentRemainingAnnounceFact) {
_percentRemainingAnnounceFact = new SettingsFact(_settingsGroup, _percentRemainingAnnounceFactName, FactMetaData::valueTypeInt32, _percentRemainingAnnounceDefault);
}
return _percentRemainingAnnounceFact;
}
const char* VehicleWindFactGroup::_directionFactName = "direction";
const char* VehicleWindFactGroup::_speedFactName = "speed";
const char* VehicleWindFactGroup::_verticalSpeedFactName = "verticalSpeed";

6
src/Vehicle/Vehicle.h

@ -184,7 +184,7 @@ public: @@ -184,7 +184,7 @@ public:
Fact* voltage (void) { return &_voltageFact; }
Fact* percentRemaining (void) { return &_percentRemainingFact; }
Fact* percentRemainingAnnounce (void) { return &_percentRemainingAnnounceFact; }
Fact* percentRemainingAnnounce (void);
Fact* mahConsumed (void) { return &_mahConsumedFact; }
Fact* current (void) { return &_currentFact; }
Fact* temperature (void) { return &_temperatureFact; }
@ -220,7 +220,9 @@ private: @@ -220,7 +220,9 @@ private:
Fact _temperatureFact;
Fact _cellCountFact;
static SettingsFact _percentRemainingAnnounceFact;
/// This fact is global to all Vehicles. We must allocated the first time we need it so we don't
/// run into QSettings application setup ordering issues.
static SettingsFact* _percentRemainingAnnounceFact;
};
class Vehicle : public FactGroup

Loading…
Cancel
Save