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

Side by Side Diff: content/browser/device_orientation/data_fetcher_impl_win.cc

Issue 18572014: Implement Android shared memory data fetcher for Device Motion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@renderer-sync-12June-tryASYNC-2-bis-tryRebase-6
Patch Set: fixed comments, added proper singleton implementation and shutdown. Created 7 years, 5 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
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/browser/device_orientation/data_fetcher_impl_win.h" 5 #include "content/browser/device_orientation/data_fetcher_impl_win.h"
6 6
7 #include <InitGuid.h> 7 #include <InitGuid.h>
8 #include <PortableDeviceTypes.h> 8 #include <PortableDeviceTypes.h>
9 #include <Sensors.h> 9 #include <Sensors.h>
10 10
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 STDMETHODIMP OnStateChanged(ISensor* sensor, SensorState state) OVERRIDE { 94 STDMETHODIMP OnStateChanged(ISensor* sensor, SensorState state) OVERRIDE {
95 return S_OK; 95 return S_OK;
96 } 96 }
97 97
98 private: 98 private:
99 DataFetcherImplWin* const fetcher_; 99 DataFetcherImplWin* const fetcher_;
100 100
101 DISALLOW_COPY_AND_ASSIGN(SensorEventSink); 101 DISALLOW_COPY_AND_ASSIGN(SensorEventSink);
102 }; 102 };
103 103
104 DataFetcherImplWin* DataFetcherImplWin::instance() {
105 CR_DEFINE_STATIC_LOCAL(DataFetcherImplWin, s_data_fetcher, ());
106 return &s_data_fetcher;
107 }
108
104 // Create a DataFetcherImplWin object and return NULL if no valid sensor found. 109 // Create a DataFetcherImplWin object and return NULL if no valid sensor found.
105 // static 110 // static
106 DataFetcher* DataFetcherImplWin::Create() { 111 DataFetcher* DataFetcherImplWin::Create() {
107 scoped_ptr<DataFetcherImplWin> fetcher(new DataFetcherImplWin); 112 DataFetcherImplWin* fetcher = DataFetcherImplWin::instance();
108 if (fetcher->Initialize()) 113 if (fetcher->Initialize())
109 return fetcher.release(); 114 return fetcher;
110 115
111 LOG(ERROR) << "DataFetcherImplWin::Initialize failed!"; 116 LOG(ERROR) << "DataFetcherImplWin::Initialize failed!";
112 return NULL; 117 return NULL;
113 } 118 }
114 119
115 DataFetcherImplWin::~DataFetcherImplWin() { 120 DataFetcherImplWin::~DataFetcherImplWin() {
116 if (sensor_) 121 Stop();
117 sensor_->SetEventSink(NULL);
118 } 122 }
119 123
120 DataFetcherImplWin::DataFetcherImplWin() { 124 DataFetcherImplWin::DataFetcherImplWin() {
121 } 125 }
122 126
127 void DataFetcherImplWin::Stop() {
128 if (sensor_)
129 sensor_->SetEventSink(NULL);
130 }
131
123 void DataFetcherImplWin::OnOrientationData(Orientation* orientation) { 132 void DataFetcherImplWin::OnOrientationData(Orientation* orientation) {
124 // This method is called on Windows sensor thread. 133 // This method is called on Windows sensor thread.
125 base::AutoLock autolock(next_orientation_lock_); 134 base::AutoLock autolock(next_orientation_lock_);
126 next_orientation_ = orientation; 135 next_orientation_ = orientation;
127 } 136 }
128 137
129 const DeviceData* DataFetcherImplWin::GetDeviceData(DeviceData::Type type) { 138 const DeviceData* DataFetcherImplWin::GetDeviceData(DeviceData::Type type) {
130 if (type != DeviceData::kTypeOrientation) 139 if (type != DeviceData::kTypeOrientation)
131 return NULL; 140 return NULL;
132 return GetOrientation(); 141 return GetOrientation();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 return false; 193 return false;
185 194
186 hr = sensor_->SetEventSink(sensor_events); 195 hr = sensor_->SetEventSink(sensor_events);
187 if (FAILED(hr)) 196 if (FAILED(hr))
188 return false; 197 return false;
189 198
190 return true; 199 return true;
191 } 200 }
192 201
193 } // namespace content 202 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698