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

Side by Side Diff: chromeos/accelerometer/accelerometer_reader.cc

Issue 822503003: Change AccelerometerReader to a Singleton (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 | « chromeos/accelerometer/accelerometer_reader.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 "chromeos/accelerometer/accelerometer_reader.h" 5 #include "chromeos/accelerometer/accelerometer_reader.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/location.h" 11 #include "base/location.h"
12 #include "base/memory/singleton.h"
12 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
13 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
15 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
16 #include "base/task_runner.h" 17 #include "base/task_runner.h"
17 #include "base/task_runner_util.h" 18 #include "base/task_runner_util.h"
18 #include "base/threading/sequenced_worker_pool.h" 19 #include "base/threading/sequenced_worker_pool.h"
19 20
20 namespace chromeos { 21 namespace chromeos {
21 22
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 for (int j = 0; j < 3; ++j) { 177 for (int j = 0; j < 3; ++j) {
177 scale[i][j] = 0; 178 scale[i][j] = 0;
178 index[i][j] = -1; 179 index[i][j] = -1;
179 } 180 }
180 } 181 }
181 } 182 }
182 183
183 AccelerometerReader::ConfigurationData::~ConfigurationData() { 184 AccelerometerReader::ConfigurationData::~ConfigurationData() {
184 } 185 }
185 186
186 AccelerometerReader::AccelerometerReader() 187 // static
187 : configuration_(new AccelerometerReader::Configuration()), 188 AccelerometerReader* AccelerometerReader::GetInstance() {
188 weak_factory_(this) { 189 return Singleton<AccelerometerReader,
189 } 190 LeakySingletonTraits<AccelerometerReader>>::get();
oshima 2015/01/07 16:39:57 why this needs to be leaky?
jonross 2015/01/12 15:15:46 As discussed offline this is not necessary. Thanks
190
191 AccelerometerReader::~AccelerometerReader() {
192 } 191 }
193 192
194 void AccelerometerReader::Initialize( 193 void AccelerometerReader::Initialize(
195 scoped_refptr<base::TaskRunner> blocking_task_runner) { 194 scoped_refptr<base::TaskRunner> blocking_task_runner) {
196 DCHECK(blocking_task_runner.get()); 195 DCHECK(blocking_task_runner.get());
197 task_runner_ = blocking_task_runner; 196 task_runner_ = blocking_task_runner;
198 // Asynchronously detect and initialize the accelerometer to avoid delaying 197 // Asynchronously detect and initialize the accelerometer to avoid delaying
199 // startup. 198 // startup.
200 base::PostTaskAndReplyWithResult( 199 base::PostTaskAndReplyWithResult(
201 task_runner_.get(), FROM_HERE, 200 task_runner_.get(), FROM_HERE,
202 base::Bind(&DetectAndReadAccelerometerConfiguration, configuration_), 201 base::Bind(&DetectAndReadAccelerometerConfiguration, configuration_),
203 base::Bind(&AccelerometerReader::OnInitialized, 202 base::Bind(&AccelerometerReader::OnInitialized,
204 weak_factory_.GetWeakPtr(), configuration_)); 203 weak_factory_.GetWeakPtr(), configuration_));
205 } 204 }
206 205
207 void AccelerometerReader::AddObserver(Observer* observer) { 206 void AccelerometerReader::AddObserver(Observer* observer) {
208 observers_.AddObserver(observer); 207 observers_.AddObserver(observer);
209 } 208 }
210 209
211 void AccelerometerReader::RemoveObserver(Observer* observer) { 210 void AccelerometerReader::RemoveObserver(Observer* observer) {
212 observers_.RemoveObserver(observer); 211 observers_.RemoveObserver(observer);
213 } 212 }
214 213
214 AccelerometerReader::AccelerometerReader()
215 : configuration_(new AccelerometerReader::Configuration()),
216 weak_factory_(this) {
217 }
218
219 AccelerometerReader::~AccelerometerReader() {
220 }
221
215 void AccelerometerReader::OnInitialized( 222 void AccelerometerReader::OnInitialized(
216 scoped_refptr<AccelerometerReader::Configuration> configuration, 223 scoped_refptr<AccelerometerReader::Configuration> configuration,
217 bool success) { 224 bool success) {
218 if (success) 225 if (success)
219 TriggerRead(); 226 TriggerRead();
220 } 227 }
221 228
222 void AccelerometerReader::TriggerRead() { 229 void AccelerometerReader::TriggerRead() {
223 DCHECK(!task_runner_->RunsTasksOnCurrentThread()); 230 DCHECK(!task_runner_->RunsTasksOnCurrentThread());
224 231
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 264
258 // Trigger another read after the current sampling delay. 265 // Trigger another read after the current sampling delay.
259 base::MessageLoop::current()->PostDelayedTask( 266 base::MessageLoop::current()->PostDelayedTask(
260 FROM_HERE, 267 FROM_HERE,
261 base::Bind(&AccelerometerReader::TriggerRead, 268 base::Bind(&AccelerometerReader::TriggerRead,
262 weak_factory_.GetWeakPtr()), 269 weak_factory_.GetWeakPtr()),
263 base::TimeDelta::FromMilliseconds(kDelayBetweenReadsMs)); 270 base::TimeDelta::FromMilliseconds(kDelayBetweenReadsMs));
264 } 271 }
265 272
266 } // namespace chromeos 273 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/accelerometer/accelerometer_reader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698