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

Unified Diff: content/browser/gamepad/gamepad_provider.cc

Issue 8689011: Renderer reading side of gamepad (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: move seqlock to gamepad-specific, improve description Created 9 years, 1 month 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/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();

Powered by Google App Engine
This is Rietveld 408576698