healthd: BatteryPropertiesRegistrar binder service ref count fixup

Call addService using a reference to a strong pointer to the service object,
such that the proper IBinder object is ref counted, instead of passing the
object's this pointer.

Bug: None
Change-Id: I72cac08c835a17b8cc263b2dc34864420b7a2841
This commit is contained in:
Todd Poynor 2016-01-05 19:41:34 -08:00
parent 8dfe21eaad
commit e55356486f
3 changed files with 5 additions and 4 deletions

View File

@ -30,8 +30,9 @@
namespace android {
void BatteryPropertiesRegistrar::publish() {
defaultServiceManager()->addService(String16("batteryproperties"), this);
void BatteryPropertiesRegistrar::publish(
const sp<BatteryPropertiesRegistrar>& service) {
defaultServiceManager()->addService(String16("batteryproperties"), service);
}
void BatteryPropertiesRegistrar::notifyListeners(struct BatteryProperties props) {

View File

@ -30,7 +30,7 @@ namespace android {
class BatteryPropertiesRegistrar : public BnBatteryPropertiesRegistrar,
public IBinder::DeathRecipient {
public:
void publish();
void publish(const sp<BatteryPropertiesRegistrar>& service);
void notifyListeners(struct BatteryProperties props);
private:

View File

@ -58,5 +58,5 @@ void healthd_mode_android_init(struct healthd_config* /*config*/) {
}
gBatteryPropertiesRegistrar = new BatteryPropertiesRegistrar();
gBatteryPropertiesRegistrar->publish();
gBatteryPropertiesRegistrar->publish(gBatteryPropertiesRegistrar);
}