diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index c9b0f7c27..cc2f745ea 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -383,7 +383,8 @@ Vector SensorService::getSensorList() sp SensorService::createSensorEventConnection() { - sp result(new SensorEventConnection(this)); + uid_t uid = IPCThreadState::self()->getCallingUid(); + sp result(new SensorEventConnection(this, uid)); return result; } @@ -553,8 +554,8 @@ bool SensorService::SensorRecord::removeConnection( // --------------------------------------------------------------------------- SensorService::SensorEventConnection::SensorEventConnection( - const sp& service) - : mService(service), mChannel(new BitTube()) + const sp& service, uid_t uid) + : mService(service), mChannel(new BitTube()), mUid(uid) { } diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h index 54a76e820..18591bf2b 100644 --- a/services/sensorservice/SensorService.h +++ b/services/sensorservice/SensorService.h @@ -77,13 +77,14 @@ class SensorService : sp const mService; sp const mChannel; + uid_t mUid; mutable Mutex mConnectionLock; // protected by SensorService::mLock SortedVector mSensorInfo; public: - SensorEventConnection(const sp& service); + SensorEventConnection(const sp& service, uid_t uid); status_t sendEvents(sensors_event_t const* buffer, size_t count, sensors_event_t* scratch = NULL); @@ -91,6 +92,8 @@ class SensorService : bool hasAnySensor() const; bool addSensor(int32_t handle); bool removeSensor(int32_t handle); + + uid_t getUid() const { return mUid; } }; class SensorRecord {