| Index: content/browser/gamepad/gamepad_provider.cc
|
| diff --git a/content/browser/gamepad/gamepad_provider.cc b/content/browser/gamepad/gamepad_provider.cc
|
| index 642e2445a7bbe8fa0d0fc8fa7fd1fcbe2827c101..06b2165a125385304bfd845f4af3562f7ff1daf5 100644
|
| --- a/content/browser/gamepad/gamepad_provider.cc
|
| +++ b/content/browser/gamepad/gamepad_provider.cc
|
| @@ -119,9 +119,17 @@ void Provider::DoInitializePollingThread() {
|
| void Provider::DoPoll() {
|
| DCHECK(MessageLoop::current() == polling_thread_->message_loop());
|
| GamepadHardwareBuffer* hwbuf = SharedMemoryAsHardwareBuffer();
|
| - base::subtle::Barrier_AtomicIncrement(&hwbuf->start_marker, 1);
|
| +
|
| + ANNOTATE_BENIGN_RACE_SIZED(
|
| + &hwbuf->buffer,
|
| + sizeof(WebKit::WebGamepads),
|
| + "Racey reads are discarded");
|
| +
|
| + // Acquire the SeqLock. There is only ever one writer to this data.
|
| + // See gamepad_hardware_buffer.h.
|
| + hwbuf->sequence.WriteBegin();
|
| data_fetcher_->GetGamepadData(&hwbuf->buffer, devices_changed_);
|
| - base::subtle::Barrier_AtomicIncrement(&hwbuf->end_marker, 1);
|
| + hwbuf->sequence.WriteEnd();
|
| devices_changed_ = false;
|
| // Schedule our next interval of polling.
|
| ScheduleDoPoll();
|
|
|