| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/device_sensors/data_fetcher_shared_memory.h" | 5 #include "content/browser/device_sensors/data_fetcher_shared_memory.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| 11 #include "base/single_thread_task_runner.h" |
| 11 #include "content/browser/device_sensors/ambient_light_mac.h" | 12 #include "content/browser/device_sensors/ambient_light_mac.h" |
| 12 #include "third_party/sudden_motion_sensor/sudden_motion_sensor_mac.h" | 13 #include "third_party/sudden_motion_sensor/sudden_motion_sensor_mac.h" |
| 13 | 14 |
| 14 namespace { | 15 namespace { |
| 15 | 16 |
| 16 const double kMeanGravity = 9.80665; | 17 const double kMeanGravity = 9.80665; |
| 17 | 18 |
| 18 double LMUvalueToLux(uint64_t raw_value) { | 19 double LMUvalueToLux(uint64_t raw_value) { |
| 19 // Conversion formula from regression. | 20 // Conversion formula from regression. |
| 20 // https://bugzilla.mozilla.org/show_bug.cgi?id=793728 | 21 // https://bugzilla.mozilla.org/show_bug.cgi?id=793728 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 135 |
| 135 namespace content { | 136 namespace content { |
| 136 | 137 |
| 137 DataFetcherSharedMemory::DataFetcherSharedMemory() { | 138 DataFetcherSharedMemory::DataFetcherSharedMemory() { |
| 138 } | 139 } |
| 139 | 140 |
| 140 DataFetcherSharedMemory::~DataFetcherSharedMemory() { | 141 DataFetcherSharedMemory::~DataFetcherSharedMemory() { |
| 141 } | 142 } |
| 142 | 143 |
| 143 void DataFetcherSharedMemory::Fetch(unsigned consumer_bitmask) { | 144 void DataFetcherSharedMemory::Fetch(unsigned consumer_bitmask) { |
| 144 DCHECK(base::MessageLoop::current() == GetPollingMessageLoop()); | 145 DCHECK(GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); |
| 145 DCHECK(consumer_bitmask & CONSUMER_TYPE_ORIENTATION || | 146 DCHECK(consumer_bitmask & CONSUMER_TYPE_ORIENTATION || |
| 146 consumer_bitmask & CONSUMER_TYPE_MOTION || | 147 consumer_bitmask & CONSUMER_TYPE_MOTION || |
| 147 consumer_bitmask & CONSUMER_TYPE_LIGHT); | 148 consumer_bitmask & CONSUMER_TYPE_LIGHT); |
| 148 | 149 |
| 149 if (consumer_bitmask & CONSUMER_TYPE_ORIENTATION) | 150 if (consumer_bitmask & CONSUMER_TYPE_ORIENTATION) |
| 150 FetchOrientation(sudden_motion_sensor_.get(), orientation_buffer_); | 151 FetchOrientation(sudden_motion_sensor_.get(), orientation_buffer_); |
| 151 if (consumer_bitmask & CONSUMER_TYPE_MOTION) | 152 if (consumer_bitmask & CONSUMER_TYPE_MOTION) |
| 152 FetchMotion(sudden_motion_sensor_.get(), motion_buffer_); | 153 FetchMotion(sudden_motion_sensor_.get(), motion_buffer_); |
| 153 if (consumer_bitmask & CONSUMER_TYPE_LIGHT) | 154 if (consumer_bitmask & CONSUMER_TYPE_LIGHT) |
| 154 FetchLight(ambient_light_sensor_.get(), light_buffer_); | 155 FetchLight(ambient_light_sensor_.get(), light_buffer_); |
| 155 } | 156 } |
| 156 | 157 |
| 157 DataFetcherSharedMemory::FetcherType DataFetcherSharedMemory::GetType() const { | 158 DataFetcherSharedMemory::FetcherType DataFetcherSharedMemory::GetType() const { |
| 158 return FETCHER_TYPE_POLLING_CALLBACK; | 159 return FETCHER_TYPE_POLLING_CALLBACK; |
| 159 } | 160 } |
| 160 | 161 |
| 161 bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) { | 162 bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) { |
| 162 DCHECK(base::MessageLoop::current() == GetPollingMessageLoop()); | 163 DCHECK(GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); |
| 163 DCHECK(buffer); | 164 DCHECK(buffer); |
| 164 | 165 |
| 165 switch (consumer_type) { | 166 switch (consumer_type) { |
| 166 case CONSUMER_TYPE_MOTION: { | 167 case CONSUMER_TYPE_MOTION: { |
| 167 if (!sudden_motion_sensor_) | 168 if (!sudden_motion_sensor_) |
| 168 sudden_motion_sensor_.reset(SuddenMotionSensor::Create()); | 169 sudden_motion_sensor_.reset(SuddenMotionSensor::Create()); |
| 169 bool sudden_motion_sensor_available = | 170 bool sudden_motion_sensor_available = |
| 170 sudden_motion_sensor_.get() != nullptr; | 171 sudden_motion_sensor_.get() != nullptr; |
| 171 | 172 |
| 172 motion_buffer_ = static_cast<DeviceMotionHardwareBuffer*>(buffer); | 173 motion_buffer_ = static_cast<DeviceMotionHardwareBuffer*>(buffer); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 } | 229 } |
| 229 return ambient_light_sensor_available; | 230 return ambient_light_sensor_available; |
| 230 } | 231 } |
| 231 default: | 232 default: |
| 232 NOTREACHED(); | 233 NOTREACHED(); |
| 233 } | 234 } |
| 234 return false; | 235 return false; |
| 235 } | 236 } |
| 236 | 237 |
| 237 bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) { | 238 bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) { |
| 238 DCHECK(base::MessageLoop::current() == GetPollingMessageLoop()); | 239 DCHECK(GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); |
| 239 | 240 |
| 240 switch (consumer_type) { | 241 switch (consumer_type) { |
| 241 case CONSUMER_TYPE_MOTION: | 242 case CONSUMER_TYPE_MOTION: |
| 242 if (motion_buffer_) { | 243 if (motion_buffer_) { |
| 243 motion_buffer_->seqlock.WriteBegin(); | 244 motion_buffer_->seqlock.WriteBegin(); |
| 244 motion_buffer_->data.allAvailableSensorsAreActive = false; | 245 motion_buffer_->data.allAvailableSensorsAreActive = false; |
| 245 motion_buffer_->seqlock.WriteEnd(); | 246 motion_buffer_->seqlock.WriteEnd(); |
| 246 motion_buffer_ = nullptr; | 247 motion_buffer_ = nullptr; |
| 247 } | 248 } |
| 248 return true; | 249 return true; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 270 light_buffer_ = nullptr; | 271 light_buffer_ = nullptr; |
| 271 } | 272 } |
| 272 return true; | 273 return true; |
| 273 default: | 274 default: |
| 274 NOTREACHED(); | 275 NOTREACHED(); |
| 275 } | 276 } |
| 276 return false; | 277 return false; |
| 277 } | 278 } |
| 278 | 279 |
| 279 } // namespace content | 280 } // namespace content |
| OLD | NEW |