Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4815952 authored by Peng Xu's avatar Peng Xu Committed by android-build-merger
Browse files

[sensorservice] Init batterystats service when needed

am: 0f48c45e

Change-Id: Ib22209fa76a7756566a8606aca2885025ae3cb91
parents b0248ba6 0f48c45e
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -30,12 +30,7 @@
namespace android {
// ---------------------------------------------------------------------------

BatteryService::BatteryService() {
    const sp<IServiceManager> sm(defaultServiceManager());
    if (sm != NULL) {
        const String16 name("batterystats");
        mBatteryStatService = interface_cast<IBatteryStats>(sm->getService(name));
    }
BatteryService::BatteryService() : mBatteryStatService(nullptr) {
}

bool BatteryService::addSensor(uid_t uid, int handle) {
@@ -61,7 +56,7 @@ bool BatteryService::removeSensor(uid_t uid, int handle) {


void BatteryService::enableSensorImpl(uid_t uid, int handle) {
    if (mBatteryStatService != 0) {
    if (checkService()) {
        if (addSensor(uid, handle)) {
            int64_t identity = IPCThreadState::self()->clearCallingIdentity();
            mBatteryStatService->noteStartSensor(uid, handle);
@@ -70,7 +65,7 @@ void BatteryService::enableSensorImpl(uid_t uid, int handle) {
    }
}
void BatteryService::disableSensorImpl(uid_t uid, int handle) {
    if (mBatteryStatService != 0) {
    if (checkService()) {
        if (removeSensor(uid, handle)) {
            int64_t identity = IPCThreadState::self()->clearCallingIdentity();
            mBatteryStatService->noteStopSensor(uid, handle);
@@ -80,7 +75,7 @@ void BatteryService::disableSensorImpl(uid_t uid, int handle) {
}

void BatteryService::cleanupImpl(uid_t uid) {
    if (mBatteryStatService != 0) {
    if (checkService()) {
        Mutex::Autolock _l(mActivationsLock);
        int64_t identity = IPCThreadState::self()->clearCallingIdentity();
        for (size_t i=0 ; i<mActivations.size() ; i++) {
@@ -95,6 +90,17 @@ void BatteryService::cleanupImpl(uid_t uid) {
    }
}

bool BatteryService::checkService() {
    if (mBatteryStatService == nullptr) {
        const sp<IServiceManager> sm(defaultServiceManager());
        if (sm != NULL) {
            const String16 name("batterystats");
            mBatteryStatService = interface_cast<IBatteryStats>(sm->getService(name));
        }
    }
    return mBatteryStatService != nullptr;
}

ANDROID_SINGLETON_STATIC_INSTANCE(BatteryService)

// ---------------------------------------------------------------------------
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ class BatteryService : public Singleton<BatteryService> {
    SortedVector<Info> mActivations;
    bool addSensor(uid_t uid, int handle);
    bool removeSensor(uid_t uid, int handle);
    bool checkService();

public:
    static void enableSensor(uid_t uid, int handle) {