void NotifySensorChange(const SensorData &aSensorData) { SensorObserverList &observers = GetSensorObservers(aSensorData.sensor()); AssertMainThread(); observers.Broadcast(aSensorData); }
void RegisterSensorObserver(SensorType aSensor, ISensorObserver *aObserver) { SensorObserverList &observers = GetSensorObservers(aSensor); AssertMainThread(); observers.AddObserver(aObserver); if(observers.Length() == 1) { EnableSensorNotifications(aSensor); } }
void UnregisterSensorObserver(SensorType aSensor, ISensorObserver *aObserver) { SensorObserverList &observers = GetSensorObservers(aSensor); AssertMainThread(); observers.RemoveObserver(aObserver); if(observers.Length() == 0) { DisableSensorNotifications(aSensor); } }
void UnregisterSensorObserver(SensorType aSensor, ISensorObserver *aObserver) { AssertMainThread(); if (!gSensorObservers) { return; } SensorObserverList &observers = GetSensorObservers(aSensor); if (!observers.RemoveObserver(aObserver) || observers.Length() > 0) { return; } DisableSensorNotifications(aSensor); // Destroy sSensorObservers only if all observer lists are empty. for (int i = 0; i < NUM_SENSOR_TYPE; i++) { if (gSensorObservers[i].Length() > 0) { return; } } delete [] gSensorObservers; gSensorObservers = nullptr; }