Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(751)

Side by Side Diff: content/browser/device_sensors/data_fetcher_shared_memory_win.cc

Issue 1986263003: [Win] Implement deviceorientationabsolute data fetcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/browser/device_sensors/data_fetcher_shared_memory.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <GuidDef.h> 7 #include <GuidDef.h>
8 #include <InitGuid.h> 8 #include <InitGuid.h>
9 #include <PortableDeviceTypes.h> 9 #include <PortableDeviceTypes.h>
10 #include <Sensors.h> 10 #include <Sensors.h>
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 256
257 private: 257 private:
258 DeviceLightHardwareBuffer* const buffer_; 258 DeviceLightHardwareBuffer* const buffer_;
259 259
260 DISALLOW_COPY_AND_ASSIGN(SensorEventSinkLight); 260 DISALLOW_COPY_AND_ASSIGN(SensorEventSinkLight);
261 }; 261 };
262 262
263 DataFetcherSharedMemory::DataFetcherSharedMemory() 263 DataFetcherSharedMemory::DataFetcherSharedMemory()
264 : motion_buffer_(nullptr), 264 : motion_buffer_(nullptr),
265 orientation_buffer_(nullptr), 265 orientation_buffer_(nullptr),
266 orientation_absolute_buffer_(nullptr),
266 light_buffer_(nullptr) { 267 light_buffer_(nullptr) {
267 } 268 }
268 269
269 DataFetcherSharedMemory::~DataFetcherSharedMemory() { 270 DataFetcherSharedMemory::~DataFetcherSharedMemory() {
270 } 271 }
271 272
272 DataFetcherSharedMemory::FetcherType DataFetcherSharedMemory::GetType() const { 273 DataFetcherSharedMemory::FetcherType DataFetcherSharedMemory::GetType() const {
273 return FETCHER_TYPE_SEPARATE_THREAD; 274 return FETCHER_TYPE_SEPARATE_THREAD;
274 } 275 }
275 276
(...skipping 11 matching lines...) Expand all
287 SENSOR_TYPE_INCLINOMETER_3D, sensor_inclinometer_.Receive(), sink); 288 SENSOR_TYPE_INCLINOMETER_3D, sensor_inclinometer_.Receive(), sink);
288 UMA_HISTOGRAM_BOOLEAN("InertialSensor.InclinometerWindowsAvailable", 289 UMA_HISTOGRAM_BOOLEAN("InertialSensor.InclinometerWindowsAvailable",
289 inclinometer_available); 290 inclinometer_available);
290 if (inclinometer_available) 291 if (inclinometer_available)
291 return true; 292 return true;
292 // if no sensors are available set buffer to ready, to fire null-events. 293 // if no sensors are available set buffer to ready, to fire null-events.
293 SetBufferAvailableState(consumer_type, true); 294 SetBufferAvailableState(consumer_type, true);
294 } 295 }
295 break; 296 break;
296 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE: 297 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
297 NOTIMPLEMENTED(); 298 {
299 orientation_absolute_buffer_ =
300 static_cast<DeviceOrientationHardwareBuffer*>(buffer);
301 scoped_refptr<SensorEventSink> sink(
302 new SensorEventSinkOrientation(orientation_absolute_buffer_));
303 // Currently we use the same sensor as for orientation which provides
304 // absolute angles.
305 bool inclinometer_available = RegisterForSensor(
306 SENSOR_TYPE_INCLINOMETER_3D,
307 sensor_inclinometer_absolute_.Receive(), sink);
308 // TODO(timvolodine): consider adding UMA.
309 if (inclinometer_available)
310 return true;
311 // if no sensors are available set buffer to ready, to fire null-events.
312 SetBufferAvailableState(consumer_type, true);
313 }
298 break; 314 break;
299 case CONSUMER_TYPE_MOTION: 315 case CONSUMER_TYPE_MOTION:
300 { 316 {
301 motion_buffer_ = static_cast<DeviceMotionHardwareBuffer*>(buffer); 317 motion_buffer_ = static_cast<DeviceMotionHardwareBuffer*>(buffer);
302 scoped_refptr<SensorEventSink> sink( 318 scoped_refptr<SensorEventSink> sink(
303 new SensorEventSinkMotion(motion_buffer_)); 319 new SensorEventSinkMotion(motion_buffer_));
304 bool accelerometer_available = RegisterForSensor( 320 bool accelerometer_available = RegisterForSensor(
305 SENSOR_TYPE_ACCELEROMETER_3D, sensor_accelerometer_.Receive(), 321 SENSOR_TYPE_ACCELEROMETER_3D, sensor_accelerometer_.Receive(),
306 sink); 322 sink);
307 bool gyrometer_available = RegisterForSensor( 323 bool gyrometer_available = RegisterForSensor(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 } 359 }
344 360
345 bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) { 361 bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) {
346 DisableSensors(consumer_type); 362 DisableSensors(consumer_type);
347 switch (consumer_type) { 363 switch (consumer_type) {
348 case CONSUMER_TYPE_ORIENTATION: 364 case CONSUMER_TYPE_ORIENTATION:
349 SetBufferAvailableState(consumer_type, false); 365 SetBufferAvailableState(consumer_type, false);
350 orientation_buffer_ = nullptr; 366 orientation_buffer_ = nullptr;
351 return true; 367 return true;
352 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE: 368 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
353 NOTIMPLEMENTED(); 369 SetBufferAvailableState(consumer_type, false);
354 break; 370 orientation_absolute_buffer_ = nullptr;
371 return true;
355 case CONSUMER_TYPE_MOTION: 372 case CONSUMER_TYPE_MOTION:
356 SetBufferAvailableState(consumer_type, false); 373 SetBufferAvailableState(consumer_type, false);
357 motion_buffer_ = nullptr; 374 motion_buffer_ = nullptr;
358 return true; 375 return true;
359 case CONSUMER_TYPE_LIGHT: 376 case CONSUMER_TYPE_LIGHT:
360 SetLightBuffer(light_buffer_, -1); 377 SetLightBuffer(light_buffer_, -1);
361 light_buffer_ = nullptr; 378 light_buffer_ = nullptr;
362 return true; 379 return true;
363 default: 380 default:
364 NOTREACHED(); 381 NOTREACHED();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 436
420 void DataFetcherSharedMemory::DisableSensors(ConsumerType consumer_type) { 437 void DataFetcherSharedMemory::DisableSensors(ConsumerType consumer_type) {
421 switch(consumer_type) { 438 switch(consumer_type) {
422 case CONSUMER_TYPE_ORIENTATION: 439 case CONSUMER_TYPE_ORIENTATION:
423 if (sensor_inclinometer_.get()) { 440 if (sensor_inclinometer_.get()) {
424 sensor_inclinometer_->SetEventSink(nullptr); 441 sensor_inclinometer_->SetEventSink(nullptr);
425 sensor_inclinometer_.Release(); 442 sensor_inclinometer_.Release();
426 } 443 }
427 break; 444 break;
428 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE: 445 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
429 NOTIMPLEMENTED(); 446 if (sensor_inclinometer_absolute_.get()) {
447 sensor_inclinometer_absolute_->SetEventSink(nullptr);
448 sensor_inclinometer_absolute_.Release();
449 }
430 break; 450 break;
431 case CONSUMER_TYPE_MOTION: 451 case CONSUMER_TYPE_MOTION:
432 if (sensor_accelerometer_.get()) { 452 if (sensor_accelerometer_.get()) {
433 sensor_accelerometer_->SetEventSink(nullptr); 453 sensor_accelerometer_->SetEventSink(nullptr);
434 sensor_accelerometer_.Release(); 454 sensor_accelerometer_.Release();
435 } 455 }
436 if (sensor_gyrometer_.get()) { 456 if (sensor_gyrometer_.get()) {
437 sensor_gyrometer_->SetEventSink(nullptr); 457 sensor_gyrometer_->SetEventSink(nullptr);
438 sensor_gyrometer_.Release(); 458 sensor_gyrometer_.Release();
439 } 459 }
(...skipping 12 matching lines...) Expand all
452 void DataFetcherSharedMemory::SetBufferAvailableState( 472 void DataFetcherSharedMemory::SetBufferAvailableState(
453 ConsumerType consumer_type, bool enabled) { 473 ConsumerType consumer_type, bool enabled) {
454 switch(consumer_type) { 474 switch(consumer_type) {
455 case CONSUMER_TYPE_ORIENTATION: 475 case CONSUMER_TYPE_ORIENTATION:
456 if (orientation_buffer_) { 476 if (orientation_buffer_) {
457 orientation_buffer_->seqlock.WriteBegin(); 477 orientation_buffer_->seqlock.WriteBegin();
458 orientation_buffer_->data.allAvailableSensorsAreActive = enabled; 478 orientation_buffer_->data.allAvailableSensorsAreActive = enabled;
459 orientation_buffer_->seqlock.WriteEnd(); 479 orientation_buffer_->seqlock.WriteEnd();
460 } 480 }
461 break; 481 break;
482 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
483 if (orientation_absolute_buffer_) {
484 orientation_absolute_buffer_->seqlock.WriteBegin();
485 orientation_absolute_buffer_->data.allAvailableSensorsAreActive =
486 enabled;
487 orientation_absolute_buffer_->seqlock.WriteEnd();
488 }
489 break;
462 case CONSUMER_TYPE_MOTION: 490 case CONSUMER_TYPE_MOTION:
463 if (motion_buffer_) { 491 if (motion_buffer_) {
464 motion_buffer_->seqlock.WriteBegin(); 492 motion_buffer_->seqlock.WriteBegin();
465 motion_buffer_->data.allAvailableSensorsAreActive = enabled; 493 motion_buffer_->data.allAvailableSensorsAreActive = enabled;
466 motion_buffer_->seqlock.WriteEnd(); 494 motion_buffer_->seqlock.WriteEnd();
467 } 495 }
468 break; 496 break;
469 default: 497 default:
470 NOTREACHED(); 498 NOTREACHED();
471 } 499 }
472 } 500 }
473 501
474 } // namespace content 502 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/device_sensors/data_fetcher_shared_memory.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698