OLD | NEW |
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 CC_DEBUG_LATENCY_INFO_H_ | 5 #ifndef CC_DEBUG_LATENCY_INFO_H_ |
6 #define CC_DEBUG_LATENCY_INFO_H_ | 6 #define CC_DEBUG_LATENCY_INFO_H_ |
7 | 7 |
| 8 #include <map> |
| 9 #include <utility> |
| 10 |
| 11 #include "base/basictypes.h" |
8 #include "base/time.h" | 12 #include "base/time.h" |
| 13 #include "cc/base/cc_export.h" |
9 | 14 |
10 namespace cc { | 15 namespace cc { |
11 | 16 |
12 struct LatencyInfo { | 17 enum LatencyComponentType { |
13 int64 renderer_main_frame_number; | 18 kRendererMainThread, |
14 int64 renderer_impl_frame_number; | 19 kRendererImplThread, |
15 int64 browser_main_frame_number; | 20 kBrowserMainThread, |
16 int64 browser_impl_frame_number; | 21 kBrowserImplThread, |
| 22 kInputEvent, |
| 23 }; |
17 | 24 |
| 25 struct CC_EXPORT LatencyInfo { |
| 26 struct LatencyComponent { |
| 27 // Nondecreasing number that can be used to determine what events happened |
| 28 // in the component at the time this struct was sent on to the next |
| 29 // component. |
| 30 int64 sequence_number; |
| 31 // Average time of events that happened in this component. |
| 32 base::TimeTicks event_time; |
| 33 // Count of events that happened in this component |
| 34 uint32 event_count; |
| 35 }; |
| 36 |
| 37 // Map a Latency Component (with a component-specific int64 id) to a |
| 38 // component info. |
| 39 typedef std::map<std::pair<LatencyComponentType, int64>, LatencyComponent> |
| 40 LatencyMap; |
| 41 |
| 42 LatencyMap latency_components; |
| 43 |
| 44 // This represents the final time that a frame is displayed it. |
18 base::TimeTicks swap_timestamp; | 45 base::TimeTicks swap_timestamp; |
19 | 46 |
20 LatencyInfo() : | 47 LatencyInfo(); |
21 renderer_main_frame_number(0), | 48 |
22 renderer_impl_frame_number(0), | 49 ~LatencyInfo(); |
23 browser_main_frame_number(0), | 50 |
24 browser_impl_frame_number(0) {} | 51 void MergeWith(const LatencyInfo& other); |
| 52 |
| 53 void AddLatencyNumber(LatencyComponentType component, int64 id, |
| 54 int64 component_sequence_number); |
| 55 void AddLatencyNumberWithTimestamp(LatencyComponentType component, |
| 56 int64 id, int64 component_sequence_number, |
| 57 base::TimeTicks time, |
| 58 uint32 event_count); |
| 59 |
| 60 void Clear(); |
25 }; | 61 }; |
26 | 62 |
27 } // namespace cc | 63 } // namespace cc |
28 | 64 |
29 #endif // CC_DEBUG_LATENCY_INFO_H_ | 65 #endif // CC_DEBUG_LATENCY_INFO_H_ |
30 | 66 |
OLD | NEW |