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

Unified Diff: content/browser/device_orientation/data_fetcher_shared_memory_default.cc

Issue 23441047: Fix race condition in DataFetcherSharedMemoryBase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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_orientation/data_fetcher_shared_memory_default.cc
diff --git a/content/browser/device_orientation/data_fetcher_shared_memory_default.cc b/content/browser/device_orientation/data_fetcher_shared_memory_default.cc
index 9f9a07874b7a2dafbcc4afe7d0864d9577af45c1..45d2296c01eff65e417ac5fd93a30aeffa742152 100644
--- a/content/browser/device_orientation/data_fetcher_shared_memory_default.cc
+++ b/content/browser/device_orientation/data_fetcher_shared_memory_default.cc
@@ -12,7 +12,8 @@ namespace {
static bool SetMotionBuffer(content::DeviceMotionHardwareBuffer* buffer,
bool enabled) {
- DCHECK(buffer);
+ if (!buffer)
+ return false;
buffer->seqlock.WriteBegin();
buffer->data.allAvailableSensorsAreActive = enabled;
buffer->seqlock.WriteEnd();
@@ -29,14 +30,13 @@ DataFetcherSharedMemory::DataFetcherSharedMemory() {
DataFetcherSharedMemory::~DataFetcherSharedMemory() {
}
-bool DataFetcherSharedMemory::Start(ConsumerType consumer_type) {
- void* buffer = GetSharedMemoryBuffer(consumer_type);
+bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) {
DCHECK(buffer);
switch (consumer_type) {
case CONSUMER_TYPE_MOTION:
- return SetMotionBuffer(
- static_cast<DeviceMotionHardwareBuffer*>(buffer), true);
+ motion_buffer_ = static_cast<DeviceMotionHardwareBuffer*>(buffer);
+ return SetMotionBuffer(motion_buffer_, true);
case CONSUMER_TYPE_ORIENTATION:
NOTIMPLEMENTED();
break;
@@ -47,13 +47,10 @@ bool DataFetcherSharedMemory::Start(ConsumerType consumer_type) {
}
bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) {
- void* buffer = GetSharedMemoryBuffer(consumer_type);
- DCHECK(buffer);
switch (consumer_type) {
case CONSUMER_TYPE_MOTION:
- return SetMotionBuffer(
- static_cast<DeviceMotionHardwareBuffer*>(buffer), false);
+ return SetMotionBuffer(motion_buffer_, false);
case CONSUMER_TYPE_ORIENTATION:
NOTIMPLEMENTED();
break;

Powered by Google App Engine
This is Rietveld 408576698