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

Unified Diff: content/browser/device_sensors/sensor_manager_android.cc

Issue 292693004: [DeviceLight] Browser+java part (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change frequency in sensor_consts Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/device_sensors/sensor_manager_android.cc
diff --git a/content/browser/device_sensors/sensor_manager_android.cc b/content/browser/device_sensors/sensor_manager_android.cc
index 400adfa355bccbb1ea607eb52c86ae774994851f..2f227fd5a5047c24e4788bc5c0a7dc5df106d31b 100644
--- a/content/browser/device_sensors/sensor_manager_android.cc
+++ b/content/browser/device_sensors/sensor_manager_android.cc
@@ -26,15 +26,15 @@ namespace content {
SensorManagerAndroid::SensorManagerAndroid()
: number_active_device_motion_sensors_(0),
+ device_light_buffer_(NULL),
device_motion_buffer_(NULL),
device_orientation_buffer_(NULL),
+ is_light_buffer_ready_(false),
is_motion_buffer_ready_(false),
is_orientation_buffer_ready_(false) {
memset(received_motion_data_, 0, sizeof(received_motion_data_));
- device_orientation_.Reset(
- Java_DeviceSensors_getInstance(
- AttachCurrentThread(),
- base::android::GetApplicationContext()));
+ device_sensors_.Reset(Java_DeviceSensors_getInstance(
+ AttachCurrentThread(), base::android::GetApplicationContext()));
}
SensorManagerAndroid::~SensorManagerAndroid() {
@@ -137,30 +137,73 @@ void SensorManagerAndroid::GotRotationRate(
}
}
+void SensorManagerAndroid::GotLight(JNIEnv*, jobject, double value) {
+ base::AutoLock autolock(light_buffer_lock_);
+
+ if (!device_light_buffer_)
+ return;
+
+ device_light_buffer_->seqlock.WriteBegin();
+ device_light_buffer_->data.value = value;
+ device_light_buffer_->seqlock.WriteEnd();
+}
+
bool SensorManagerAndroid::Start(EventType event_type) {
- DCHECK(!device_orientation_.is_null());
- return Java_DeviceSensors_start(
- AttachCurrentThread(), device_orientation_.obj(),
- reinterpret_cast<intptr_t>(this), static_cast<jint>(event_type),
- kInertialSensorIntervalMillis);
+ DCHECK(!device_sensors_.is_null());
+ int rate_in_milliseconds = (event_type == kTypeLight)
+ ? kInertialLightSensorIntervalMillis
+ : kInertialSensorIntervalMillis;
+ return Java_DeviceSensors_start(AttachCurrentThread(),
+ device_sensors_.obj(),
+ reinterpret_cast<intptr_t>(this),
+ static_cast<jint>(event_type),
+ rate_in_milliseconds);
}
void SensorManagerAndroid::Stop(EventType event_type) {
- DCHECK(!device_orientation_.is_null());
- Java_DeviceSensors_stop(
- AttachCurrentThread(), device_orientation_.obj(),
- static_cast<jint>(event_type));
+ DCHECK(!device_sensors_.is_null());
+ Java_DeviceSensors_stop(AttachCurrentThread(),
+ device_sensors_.obj(),
+ static_cast<jint>(event_type));
}
int SensorManagerAndroid::GetNumberActiveDeviceMotionSensors() {
- DCHECK(!device_orientation_.is_null());
+ DCHECK(!device_sensors_.is_null());
return Java_DeviceSensors_getNumberActiveDeviceMotionSensors(
- AttachCurrentThread(), device_orientation_.obj());
+ AttachCurrentThread(), device_sensors_.obj());
}
// ----- Shared memory API methods
+// --- Device Light
+
+bool SensorManagerAndroid::StartFetchingDeviceLightData(
+ DeviceLightHardwareBuffer* buffer) {
+ DCHECK(buffer);
+ {
+ base::AutoLock autolock(light_buffer_lock_);
+ device_light_buffer_ = buffer;
+ ClearInternalLightBuffers();
+ }
+ bool success = Start(kTypeLight);
timvolodine 2014/09/04 17:16:57 should the buffer be set to infinity when !success
riju_ 2014/09/08 09:26:17 Done.
+ return success;
+}
+
+void SensorManagerAndroid::StopFetchingDeviceLightData() {
+ Stop(kTypeLight);
+ {
+ base::AutoLock autolock(light_buffer_lock_);
+ if (device_light_buffer_) {
+ ClearInternalLightBuffers();
+ device_light_buffer_ = NULL;
+ }
+ }
+}
+
+void SensorManagerAndroid::ClearInternalLightBuffers() {
+ device_light_buffer_->data.value = -1;
timvolodine 2014/09/04 17:16:57 wrap with writeBegin writeEnd.
riju_ 2014/09/08 09:26:17 Done.
+}
// --- Device Motion
bool SensorManagerAndroid::StartFetchingDeviceMotionData(

Powered by Google App Engine
This is Rietveld 408576698