diff options
author | Glenn Kasten <gkasten@google.com> | 2014-09-05 16:46:46 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2014-09-05 17:12:24 -0700 |
commit | a602086872ad725d257b3be659a774f032f06d71 (patch) | |
tree | fac8c233cc0078000ead15e3ad81027955e52952 /services/powermanager | |
parent | 253c4720af3ac631ba04eb379aea91ecc3175cd3 (diff) | |
download | frameworks_native-a602086872ad725d257b3be659a774f032f06d71.zip frameworks_native-a602086872ad725d257b3be659a774f032f06d71.tar.gz frameworks_native-a602086872ad725d257b3be659a774f032f06d71.tar.bz2 |
Make IPowerManager native conform to .aidl for oneway
But provide a temporary escape hatch for AudioFlinger.
This oneway option will be removed as soon as possible.
Bug: 16408906
Change-Id: I20d6da1969ae05b96e72795463470eb4c1f8fbdc
Diffstat (limited to 'services/powermanager')
-rw-r--r-- | services/powermanager/IPowerManager.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/services/powermanager/IPowerManager.cpp b/services/powermanager/IPowerManager.cpp index 926c050..ec864ee 100644 --- a/services/powermanager/IPowerManager.cpp +++ b/services/powermanager/IPowerManager.cpp @@ -45,7 +45,7 @@ public: } virtual status_t acquireWakeLock(int flags, const sp<IBinder>& lock, const String16& tag, - const String16& packageName) + const String16& packageName, bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); @@ -56,11 +56,12 @@ public: data.writeString16(packageName); data.writeInt32(0); // no WorkSource data.writeString16(NULL, 0); // no history tag - return remote()->transact(ACQUIRE_WAKE_LOCK, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(ACQUIRE_WAKE_LOCK, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } virtual status_t acquireWakeLockWithUid(int flags, const sp<IBinder>& lock, const String16& tag, - const String16& packageName, int uid) + const String16& packageName, int uid, bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); @@ -70,26 +71,28 @@ public: data.writeString16(tag); data.writeString16(packageName); data.writeInt32(uid); // uid to blame for the work - return remote()->transact(ACQUIRE_WAKE_LOCK_UID, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(ACQUIRE_WAKE_LOCK_UID, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } - virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags) + virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags, bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); data.writeStrongBinder(lock); data.writeInt32(flags); - return remote()->transact(RELEASE_WAKE_LOCK, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(RELEASE_WAKE_LOCK, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } - virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids) { + virtual status_t updateWakeLockUids(const sp<IBinder>& lock, int len, const int *uids, + bool isOneWay) { Parcel data, reply; data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); data.writeStrongBinder(lock); data.writeInt32Array(len, uids); - // We don't really care too much if this succeeds (there's nothing we can do if it doesn't) - // but it should return ASAP - return remote()->transact(UPDATE_WAKE_LOCK_UIDS, data, &reply, IBinder::FLAG_ONEWAY); + return remote()->transact(UPDATE_WAKE_LOCK_UIDS, data, &reply, + isOneWay ? IBinder::FLAG_ONEWAY : 0); } virtual status_t powerHint(int hintId, int param) @@ -98,6 +101,7 @@ public: data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor()); data.writeInt32(hintId); data.writeInt32(param); + // This FLAG_ONEWAY is in the .aidl, so there is no way to disable it return remote()->transact(POWER_HINT, data, &reply, IBinder::FLAG_ONEWAY); } }; |