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

Side by Side Diff: content/common/input/event_with_latency_info.h

Issue 2429953002: Implement compositor thread VSync aligned event queue (Closed)
Patch Set: dtapuska&enne's review: Call |Now()| once per loop; Chromium style; Remove parameterized test Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 #ifndef CONTENT_COMMON_INPUT_EVENT_WITH_LATENCY_INFO_H_ 5 #ifndef CONTENT_COMMON_INPUT_EVENT_WITH_LATENCY_INFO_H_
6 #define CONTENT_COMMON_INPUT_EVENT_WITH_LATENCY_INFO_H_ 6 #define CONTENT_COMMON_INPUT_EVENT_WITH_LATENCY_INFO_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "content/common/content_export.h" 10 #include "content/common/content_export.h"
11 #include "third_party/WebKit/public/platform/WebGestureEvent.h" 11 #include "third_party/WebKit/public/platform/WebGestureEvent.h"
12 #include "third_party/WebKit/public/platform/WebInputEvent.h" 12 #include "third_party/WebKit/public/platform/WebInputEvent.h"
13 #include "ui/events/blink/blink_event_util.h"
13 #include "ui/events/blink/scoped_web_input_event.h" 14 #include "ui/events/blink/scoped_web_input_event.h"
14 #include "ui/events/latency_info.h" 15 #include "ui/events/latency_info.h"
15 16
16 namespace content { 17 namespace content {
17 namespace internal {
18
19 bool CONTENT_EXPORT CanCoalesce(const blink::WebMouseEvent& event_to_coalesce,
20 const blink::WebMouseEvent& event);
21 void CONTENT_EXPORT Coalesce(const blink::WebMouseEvent& event_to_coalesce,
22 blink::WebMouseEvent* event);
23 bool CONTENT_EXPORT
24 CanCoalesce(const blink::WebMouseWheelEvent& event_to_coalesce,
25 const blink::WebMouseWheelEvent& event);
26 void CONTENT_EXPORT Coalesce(const blink::WebMouseWheelEvent& event_to_coalesce,
27 blink::WebMouseWheelEvent* event);
28 bool CONTENT_EXPORT CanCoalesce(const blink::WebTouchEvent& event_to_coalesce,
29 const blink::WebTouchEvent& event);
30 void CONTENT_EXPORT Coalesce(const blink::WebTouchEvent& event_to_coalesce,
31 blink::WebTouchEvent* event);
32 bool CONTENT_EXPORT CanCoalesce(const blink::WebGestureEvent& event_to_coalesce,
33 const blink::WebGestureEvent& event);
34 void CONTENT_EXPORT Coalesce(const blink::WebGestureEvent& event_to_coalesce,
35 blink::WebGestureEvent* event);
36
37 } // namespace internal
38 18
39 class ScopedWebInputEventWithLatencyInfo { 19 class ScopedWebInputEventWithLatencyInfo {
40 public: 20 public:
41 ScopedWebInputEventWithLatencyInfo(ui::ScopedWebInputEvent, 21 ScopedWebInputEventWithLatencyInfo(ui::ScopedWebInputEvent,
42 const ui::LatencyInfo&); 22 const ui::LatencyInfo&);
43 23
44 ~ScopedWebInputEventWithLatencyInfo(); 24 ~ScopedWebInputEventWithLatencyInfo();
45 25
46 bool CanCoalesceWith(const ScopedWebInputEventWithLatencyInfo& other) const 26 bool CanCoalesceWith(const ScopedWebInputEventWithLatencyInfo& other) const
47 WARN_UNUSED_RESULT; 27 WARN_UNUSED_RESULT;
(...skipping 23 matching lines...) Expand all
71 EventWithLatencyInfo() {} 51 EventWithLatencyInfo() {}
72 52
73 bool CanCoalesceWith(const EventWithLatencyInfo& other) 53 bool CanCoalesceWith(const EventWithLatencyInfo& other)
74 const WARN_UNUSED_RESULT { 54 const WARN_UNUSED_RESULT {
75 if (other.event.type != event.type) 55 if (other.event.type != event.type)
76 return false; 56 return false;
77 57
78 DCHECK_EQ(sizeof(T), event.size); 58 DCHECK_EQ(sizeof(T), event.size);
79 DCHECK_EQ(sizeof(T), other.event.size); 59 DCHECK_EQ(sizeof(T), other.event.size);
80 60
81 return internal::CanCoalesce(other.event, event); 61 return ui::CanCoalesce(other.event, event);
82 } 62 }
83 63
84 void CoalesceWith(const EventWithLatencyInfo& other) { 64 void CoalesceWith(const EventWithLatencyInfo& other) {
85 // |other| should be a newer event than |this|. 65 // |other| should be a newer event than |this|.
86 if (other.latency.trace_id() >= 0 && latency.trace_id() >= 0) 66 if (other.latency.trace_id() >= 0 && latency.trace_id() >= 0)
87 DCHECK_GT(other.latency.trace_id(), latency.trace_id()); 67 DCHECK_GT(other.latency.trace_id(), latency.trace_id());
88 68
89 // New events get coalesced into older events, and the newer timestamp 69 // New events get coalesced into older events, and the newer timestamp
90 // should always be preserved. 70 // should always be preserved.
91 const double time_stamp_seconds = other.event.timeStampSeconds; 71 const double time_stamp_seconds = other.event.timeStampSeconds;
92 internal::Coalesce(other.event, &event); 72 ui::Coalesce(other.event, &event);
93 event.timeStampSeconds = time_stamp_seconds; 73 event.timeStampSeconds = time_stamp_seconds;
94 74
95 // When coalescing two input events, we keep the oldest LatencyInfo 75 // When coalescing two input events, we keep the oldest LatencyInfo
96 // for Telemetry latency tests, since it will represent the longest 76 // for Telemetry latency tests, since it will represent the longest
97 // latency. 77 // latency.
98 other.latency = latency; 78 other.latency = latency;
99 other.latency.set_coalesced(); 79 other.latency.set_coalesced();
100 } 80 }
101 }; 81 };
102 82
103 typedef EventWithLatencyInfo<blink::WebGestureEvent> 83 typedef EventWithLatencyInfo<blink::WebGestureEvent>
104 GestureEventWithLatencyInfo; 84 GestureEventWithLatencyInfo;
105 typedef EventWithLatencyInfo<blink::WebMouseWheelEvent> 85 typedef EventWithLatencyInfo<blink::WebMouseWheelEvent>
106 MouseWheelEventWithLatencyInfo; 86 MouseWheelEventWithLatencyInfo;
107 typedef EventWithLatencyInfo<blink::WebMouseEvent> 87 typedef EventWithLatencyInfo<blink::WebMouseEvent>
108 MouseEventWithLatencyInfo; 88 MouseEventWithLatencyInfo;
109 typedef EventWithLatencyInfo<blink::WebTouchEvent> 89 typedef EventWithLatencyInfo<blink::WebTouchEvent>
110 TouchEventWithLatencyInfo; 90 TouchEventWithLatencyInfo;
111 91
112 } // namespace content 92 } // namespace content
113 93
114 #endif // CONTENT_COMMON_INPUT_EVENT_WITH_LATENCY_INFO_H_ 94 #endif // CONTENT_COMMON_INPUT_EVENT_WITH_LATENCY_INFO_H_
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest_scroll.cc ('k') | content/common/input/event_with_latency_info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698