| 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 "data_fetcher_shared_memory.h" | 5 #include "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 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 | 303 |
| 304 bool DataFetcherSharedMemory::RegisterForSensor( | 304 bool DataFetcherSharedMemory::RegisterForSensor( |
| 305 REFSENSOR_TYPE_ID sensor_type, | 305 REFSENSOR_TYPE_ID sensor_type, |
| 306 ISensor** sensor, | 306 ISensor** sensor, |
| 307 scoped_refptr<SensorEventSink> event_sink) { | 307 scoped_refptr<SensorEventSink> event_sink) { |
| 308 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 308 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 309 return false; | 309 return false; |
| 310 | 310 |
| 311 base::win::ScopedComPtr<ISensorManager> sensor_manager; | 311 base::win::ScopedComPtr<ISensorManager> sensor_manager; |
| 312 HRESULT hr = sensor_manager.CreateInstance(CLSID_SensorManager); | 312 HRESULT hr = sensor_manager.CreateInstance(CLSID_SensorManager); |
| 313 if (FAILED(hr) || !sensor_manager) | 313 if (FAILED(hr) || !sensor_manager.get()) |
| 314 return false; | 314 return false; |
| 315 | 315 |
| 316 base::win::ScopedComPtr<ISensorCollection> sensor_collection; | 316 base::win::ScopedComPtr<ISensorCollection> sensor_collection; |
| 317 hr = sensor_manager->GetSensorsByType( | 317 hr = sensor_manager->GetSensorsByType( |
| 318 sensor_type, sensor_collection.Receive()); | 318 sensor_type, sensor_collection.Receive()); |
| 319 | 319 |
| 320 if (FAILED(hr) || !sensor_collection) | 320 if (FAILED(hr) || !sensor_collection.get()) |
| 321 return false; | 321 return false; |
| 322 | 322 |
| 323 ULONG count = 0; | 323 ULONG count = 0; |
| 324 hr = sensor_collection->GetCount(&count); | 324 hr = sensor_collection->GetCount(&count); |
| 325 if (FAILED(hr) || !count) | 325 if (FAILED(hr) || !count) |
| 326 return false; | 326 return false; |
| 327 | 327 |
| 328 hr = sensor_collection->GetAt(0, sensor); | 328 hr = sensor_collection->GetAt(0, sensor); |
| 329 if (FAILED(hr) || !(*sensor)) | 329 if (FAILED(hr) || !(*sensor)) |
| 330 return false; | 330 return false; |
| 331 | 331 |
| 332 base::win::ScopedComPtr<IPortableDeviceValues> device_values; | 332 base::win::ScopedComPtr<IPortableDeviceValues> device_values; |
| 333 if (SUCCEEDED(device_values.CreateInstance(CLSID_PortableDeviceValues))) { | 333 if (SUCCEEDED(device_values.CreateInstance(CLSID_PortableDeviceValues))) { |
| 334 if (SUCCEEDED(device_values->SetUnsignedIntegerValue( | 334 if (SUCCEEDED(device_values->SetUnsignedIntegerValue( |
| 335 SENSOR_PROPERTY_CURRENT_REPORT_INTERVAL, | 335 SENSOR_PROPERTY_CURRENT_REPORT_INTERVAL, |
| 336 GetInterval().InMilliseconds()))) { | 336 GetInterval().InMilliseconds()))) { |
| 337 base::win::ScopedComPtr<IPortableDeviceValues> return_values; | 337 base::win::ScopedComPtr<IPortableDeviceValues> return_values; |
| 338 (*sensor)->SetProperties(device_values.get(), return_values.Receive()); | 338 (*sensor)->SetProperties(device_values.get(), return_values.Receive()); |
| 339 } | 339 } |
| 340 } | 340 } |
| 341 | 341 |
| 342 base::win::ScopedComPtr<ISensorEvents> sensor_events; | 342 base::win::ScopedComPtr<ISensorEvents> sensor_events; |
| 343 hr = event_sink->QueryInterface( | 343 hr = event_sink->QueryInterface( |
| 344 __uuidof(ISensorEvents), sensor_events.ReceiveVoid()); | 344 __uuidof(ISensorEvents), sensor_events.ReceiveVoid()); |
| 345 if (FAILED(hr) || !sensor_events) | 345 if (FAILED(hr) || !sensor_events.get()) |
| 346 return false; | 346 return false; |
| 347 | 347 |
| 348 hr = (*sensor)->SetEventSink(sensor_events); | 348 hr = (*sensor)->SetEventSink(sensor_events.get()); |
| 349 if (FAILED(hr)) | 349 if (FAILED(hr)) |
| 350 return false; | 350 return false; |
| 351 | 351 |
| 352 return true; | 352 return true; |
| 353 } | 353 } |
| 354 | 354 |
| 355 void DataFetcherSharedMemory::DisableSensors(ConsumerType consumer_type) { | 355 void DataFetcherSharedMemory::DisableSensors(ConsumerType consumer_type) { |
| 356 switch(consumer_type) { | 356 switch(consumer_type) { |
| 357 case CONSUMER_TYPE_ORIENTATION: | 357 case CONSUMER_TYPE_ORIENTATION: |
| 358 if (sensor_inclinometer_) { | 358 if (sensor_inclinometer_.get()) { |
| 359 sensor_inclinometer_->SetEventSink(NULL); | 359 sensor_inclinometer_->SetEventSink(NULL); |
| 360 sensor_inclinometer_.Release(); | 360 sensor_inclinometer_.Release(); |
| 361 } | 361 } |
| 362 break; | 362 break; |
| 363 case CONSUMER_TYPE_MOTION: | 363 case CONSUMER_TYPE_MOTION: |
| 364 if (sensor_accelerometer_) { | 364 if (sensor_accelerometer_.get()) { |
| 365 sensor_accelerometer_->SetEventSink(NULL); | 365 sensor_accelerometer_->SetEventSink(NULL); |
| 366 sensor_accelerometer_.Release(); | 366 sensor_accelerometer_.Release(); |
| 367 } | 367 } |
| 368 if (sensor_gyrometer_) { | 368 if (sensor_gyrometer_.get()) { |
| 369 sensor_gyrometer_->SetEventSink(NULL); | 369 sensor_gyrometer_->SetEventSink(NULL); |
| 370 sensor_gyrometer_.Release(); | 370 sensor_gyrometer_.Release(); |
| 371 } | 371 } |
| 372 break; | 372 break; |
| 373 default: | 373 default: |
| 374 NOTREACHED(); | 374 NOTREACHED(); |
| 375 } | 375 } |
| 376 } | 376 } |
| 377 | 377 |
| 378 void DataFetcherSharedMemory::SetBufferAvailableState( | 378 void DataFetcherSharedMemory::SetBufferAvailableState( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 391 motion_buffer_->data.allAvailableSensorsAreActive = enabled; | 391 motion_buffer_->data.allAvailableSensorsAreActive = enabled; |
| 392 motion_buffer_->seqlock.WriteEnd(); | 392 motion_buffer_->seqlock.WriteEnd(); |
| 393 } | 393 } |
| 394 break; | 394 break; |
| 395 default: | 395 default: |
| 396 NOTREACHED(); | 396 NOTREACHED(); |
| 397 } | 397 } |
| 398 } | 398 } |
| 399 | 399 |
| 400 } // namespace content | 400 } // namespace content |
| OLD | NEW |