Index: device/generic_sensor/platform_sensor_provider_base.cc |
diff --git a/device/generic_sensor/platform_sensor_provider_base.cc b/device/generic_sensor/platform_sensor_provider_base.cc |
index 4447cea93390f47f19655eaafcec4aae56e58c51..fd43614d4816896155af189f2a845322c82b6ef2 100644 |
--- a/device/generic_sensor/platform_sensor_provider_base.cc |
+++ b/device/generic_sensor/platform_sensor_provider_base.cc |
@@ -13,9 +13,9 @@ namespace device { |
namespace { |
+const uint64_t kReadingBufferSize = sizeof(SensorReadingSharedBuffer); |
const uint64_t kSharedBufferSizeInBytes = |
- mojom::SensorInitParams::kReadBufferSize * |
- static_cast<uint64_t>(mojom::SensorType::LAST); |
+ kReadingBufferSize * static_cast<uint64_t>(mojom::SensorType::LAST); |
} // namespace |
@@ -24,8 +24,6 @@ PlatformSensorProviderBase::~PlatformSensorProviderBase() = default; |
void PlatformSensorProviderBase::CreateSensor( |
mojom::SensorType type, |
- uint64_t size, |
- uint64_t offset, |
const CreateSensorCallback& callback) { |
DCHECK(CalledOnValidThread()); |
@@ -34,8 +32,8 @@ void PlatformSensorProviderBase::CreateSensor( |
return; |
} |
- mojo::ScopedSharedBufferMapping mapping = |
- shared_buffer_handle_->MapAtOffset(size, offset); |
+ mojo::ScopedSharedBufferMapping mapping = shared_buffer_handle_->MapAtOffset( |
+ kReadingBufferSize, GetSharedBufferOffset(type)); |
if (!mapping) { |
callback.Run(nullptr); |
return; |
@@ -44,11 +42,13 @@ void PlatformSensorProviderBase::CreateSensor( |
auto it = requests_map_.find(type); |
if (it != requests_map_.end()) { |
it->second.push_back(callback); |
- } else { |
+ } else { // This is the first CreateSensor call. |
+ memset(mapping.get(), 0, kReadingBufferSize); |
+ |
requests_map_[type] = CallbackQueue({callback}); |
CreateSensorInternal( |
- type, std::move(mapping), size, |
+ type, std::move(mapping), |
base::Bind(&PlatformSensorProviderBase::NotifySensorCreated, |
base::Unretained(this), type)); |
} |
@@ -109,4 +109,11 @@ void PlatformSensorProviderBase::NotifySensorCreated( |
requests_map_.erase(type); |
} |
+uint64_t PlatformSensorProviderBase::GetSharedBufferOffset( |
Ken Rockot(use gerrit already)
2016/10/10 16:02:08
nit: This doesn't need to be a member function at
Mikhail
2016/10/10 18:29:20
Thanks for hint! I've moved it here from sensor_im
|
+ mojom::SensorType type) { |
+ return (static_cast<uint64_t>(mojom::SensorType::LAST) - |
+ static_cast<uint64_t>(type)) * |
+ kReadingBufferSize; |
+} |
+ |
} // namespace device |