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 |