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

Side by Side Diff: device/generic_sensor/public/cpp/sensor_shared_buffer_reader.cc

Issue 2929603003: Add RELATIVE_ORIENTATION sensor implementation on macOS to //device/generic_sensor (Closed)
Patch Set: updated OnSensorError() Created 3 years, 6 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
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "device/generic_sensor/public/cpp/sensor_shared_buffer_reader.h"
6
7 #include "device/base/synchronization/shared_memory_seqlock_buffer.h"
8 #include "device/generic_sensor/public/cpp/sensor_reading.h"
9
10 namespace {
11
12 constexpr int kMaxReadAttemptsCount = 10;
13
14 } // namespace
15
16 namespace device {
17
18 SensorSharedBufferReader::SensorSharedBufferReader(
19 const SensorReadingSharedBuffer* buffer)
20 : buffer_(buffer) {}
21
22 SensorSharedBufferReader::~SensorSharedBufferReader() = default;
23
24 bool SensorSharedBufferReader::GetSensorReading(SensorReading* result) {
25 int read_attempts = 0;
26 while (!TryReadFromBuffer(result)) {
27 if (++read_attempts == kMaxReadAttemptsCount)
28 return false;
29 }
30
31 return true;
32 }
33
34 bool SensorSharedBufferReader::TryReadFromBuffer(SensorReading* result) {
35 const OneWriterSeqLock& seqlock = buffer_->seqlock.value();
36 auto version = seqlock.ReadBegin();
37 auto reading_data = buffer_->reading;
38 if (seqlock.ReadRetry(version))
39 return false;
40 *result = reading_data;
41 return true;
42 }
43
44 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698