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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/device_sensors/data_fetcher_shared_memory_win.cc
diff --git a/content/browser/device_sensors/data_fetcher_shared_memory_win.cc b/content/browser/device_sensors/data_fetcher_shared_memory_win.cc
index 40471ca0a3b71969245283f4aab28e9999ebfa3a..841b94caf3d4d123249f200ec370e1eeeb8842a3 100644
--- a/content/browser/device_sensors/data_fetcher_shared_memory_win.cc
+++ b/content/browser/device_sensors/data_fetcher_shared_memory_win.cc
@@ -263,6 +263,7 @@ class DataFetcherSharedMemory::SensorEventSinkLight
DataFetcherSharedMemory::DataFetcherSharedMemory()
: motion_buffer_(nullptr),
orientation_buffer_(nullptr),
+ orientation_absolute_buffer_(nullptr),
light_buffer_(nullptr) {
}
@@ -294,7 +295,22 @@ bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) {
}
break;
case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
- NOTIMPLEMENTED();
+ {
+ orientation_absolute_buffer_ =
+ static_cast<DeviceOrientationHardwareBuffer*>(buffer);
+ scoped_refptr<SensorEventSink> sink(
+ new SensorEventSinkOrientation(orientation_absolute_buffer_));
+ // Currently we use the same sensor as for orientation which provides
+ // absolute angles.
+ bool inclinometer_available = RegisterForSensor(
+ SENSOR_TYPE_INCLINOMETER_3D,
+ sensor_inclinometer_absolute_.Receive(), sink);
+ // TODO(timvolodine): consider adding UMA.
+ if (inclinometer_available)
+ return true;
+ // if no sensors are available set buffer to ready, to fire null-events.
+ SetBufferAvailableState(consumer_type, true);
+ }
break;
case CONSUMER_TYPE_MOTION:
{
@@ -350,8 +366,9 @@ bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) {
orientation_buffer_ = nullptr;
return true;
case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
- NOTIMPLEMENTED();
- break;
+ SetBufferAvailableState(consumer_type, false);
+ orientation_absolute_buffer_ = nullptr;
+ return true;
case CONSUMER_TYPE_MOTION:
SetBufferAvailableState(consumer_type, false);
motion_buffer_ = nullptr;
@@ -426,7 +443,10 @@ void DataFetcherSharedMemory::DisableSensors(ConsumerType consumer_type) {
}
break;
case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
- NOTIMPLEMENTED();
+ if (sensor_inclinometer_absolute_.get()) {
+ sensor_inclinometer_absolute_->SetEventSink(nullptr);
+ sensor_inclinometer_absolute_.Release();
+ }
break;
case CONSUMER_TYPE_MOTION:
if (sensor_accelerometer_.get()) {
@@ -459,6 +479,14 @@ void DataFetcherSharedMemory::SetBufferAvailableState(
orientation_buffer_->seqlock.WriteEnd();
}
break;
+ case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
+ if (orientation_absolute_buffer_) {
+ orientation_absolute_buffer_->seqlock.WriteBegin();
+ orientation_absolute_buffer_->data.allAvailableSensorsAreActive =
+ enabled;
+ orientation_absolute_buffer_->seqlock.WriteEnd();
+ }
+ break;
case CONSUMER_TYPE_MOTION:
if (motion_buffer_) {
motion_buffer_->seqlock.WriteBegin();
« 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