uorb callbacks: fix unregister ordering to avoid race conditions

The order should be: first unregister, then remove the item from the
runnable queue.
This commit is contained in:
Beat Küng
2020-03-09 12:07:36 +01:00
committed by Daniel Agar
parent 18bc6cf872
commit 3fef401e81
4 changed files with 7 additions and 7 deletions
@@ -71,14 +71,14 @@ bool VehicleAcceleration::Start()
void VehicleAcceleration::Stop()
{
Deinit();
// clear all registered callbacks
for (auto &sub : _sensor_sub) {
sub.unregisterCallback();
}
_sensor_selection_sub.unregisterCallback();
Deinit();
}
void VehicleAcceleration::CheckFilters()
@@ -74,14 +74,14 @@ bool VehicleAngularVelocity::Start()
void VehicleAngularVelocity::Stop()
{
Deinit();
// clear all registered callbacks
for (auto &sub : _sensor_sub) {
sub.unregisterCallback();
}
_sensor_selection_sub.unregisterCallback();
Deinit();
}
void VehicleAngularVelocity::CheckFilters()
@@ -66,11 +66,11 @@ bool VehicleIMU::Start()
void VehicleIMU::Stop()
{
Deinit();
// clear all registered callbacks
_sensor_accel_integrated_sub.unregisterCallback();
_sensor_gyro_integrated_sub.unregisterCallback();
Deinit();
}
void VehicleIMU::ParametersUpdate(bool force)