OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "ui/accelerated_widget_mac/display_link_mac.h" | 5 #include "ui/accelerated_widget_mac/display_link_mac.h" |
6 | 6 |
| 7 #include <stdint.h> |
| 8 |
7 #include "base/logging.h" | 9 #include "base/logging.h" |
8 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
9 #include "base/trace_event/trace_event.h" | 11 #include "base/trace_event/trace_event.h" |
10 | 12 |
11 namespace base { | 13 namespace base { |
12 | 14 |
13 template<> | 15 template<> |
14 struct ScopedTypeRefTraits<CVDisplayLinkRef> { | 16 struct ScopedTypeRefTraits<CVDisplayLinkRef> { |
15 static CVDisplayLinkRef InvalidValue() { return nullptr; } | 17 static CVDisplayLinkRef InvalidValue() { return nullptr; } |
16 static void Retain(CVDisplayLinkRef object) { | 18 static void Retain(CVDisplayLinkRef object) { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 StartOrContinueDisplayLink(); | 116 StartOrContinueDisplayLink(); |
115 } | 117 } |
116 | 118 |
117 void DisplayLinkMac::Tick(const CVTimeStamp& cv_time) { | 119 void DisplayLinkMac::Tick(const CVTimeStamp& cv_time) { |
118 TRACE_EVENT0("ui", "DisplayLinkMac::Tick"); | 120 TRACE_EVENT0("ui", "DisplayLinkMac::Tick"); |
119 | 121 |
120 // Verify that videoRefreshPeriod is 32 bits. | 122 // Verify that videoRefreshPeriod is 32 bits. |
121 DCHECK((cv_time.videoRefreshPeriod & ~0xffffFFFFull) == 0ull); | 123 DCHECK((cv_time.videoRefreshPeriod & ~0xffffFFFFull) == 0ull); |
122 | 124 |
123 // Verify that the numerator and denominator make some sense. | 125 // Verify that the numerator and denominator make some sense. |
124 uint32 numerator = static_cast<uint32>(cv_time.videoRefreshPeriod); | 126 uint32_t numerator = static_cast<uint32_t>(cv_time.videoRefreshPeriod); |
125 uint32 denominator = cv_time.videoTimeScale; | 127 uint32_t denominator = cv_time.videoTimeScale; |
126 if (numerator <= 0 || denominator <= 0) { | 128 if (numerator <= 0 || denominator <= 0) { |
127 LOG(WARNING) << "Unexpected numerator or denominator, bailing."; | 129 LOG(WARNING) << "Unexpected numerator or denominator, bailing."; |
128 return; | 130 return; |
129 } | 131 } |
130 | 132 |
131 timebase_ = base::TimeTicks::FromInternalValue( | 133 timebase_ = base::TimeTicks::FromInternalValue( |
132 cv_time.hostTime / 1000); | 134 cv_time.hostTime / 1000); |
133 interval_ = base::TimeDelta::FromMicroseconds( | 135 interval_ = base::TimeDelta::FromMicroseconds( |
134 1000000 * static_cast<int64>(numerator) / denominator); | 136 1000000 * static_cast<int64_t>(numerator) / denominator); |
135 timebase_and_interval_valid_ = true; | 137 timebase_and_interval_valid_ = true; |
136 | 138 |
137 // Don't restart the display link for 10 seconds. | 139 // Don't restart the display link for 10 seconds. |
138 recalculate_time_ = base::TimeTicks::Now() + | 140 recalculate_time_ = base::TimeTicks::Now() + |
139 base::TimeDelta::FromSeconds(10); | 141 base::TimeDelta::FromSeconds(10); |
140 StopDisplayLink(); | 142 StopDisplayLink(); |
141 } | 143 } |
142 | 144 |
143 void DisplayLinkMac::StartOrContinueDisplayLink() { | 145 void DisplayLinkMac::StartOrContinueDisplayLink() { |
144 if (CVDisplayLinkIsRunning(display_link_)) | 146 if (CVDisplayLinkIsRunning(display_link_)) |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 DisplayLinkMac* display_link_mac = found->second; | 189 DisplayLinkMac* display_link_mac = found->second; |
188 display_link_mac->timebase_and_interval_valid_ = false; | 190 display_link_mac->timebase_and_interval_valid_ = false; |
189 } | 191 } |
190 | 192 |
191 // static | 193 // static |
192 base::LazyInstance<DisplayLinkMac::DisplayMap> | 194 base::LazyInstance<DisplayLinkMac::DisplayMap> |
193 DisplayLinkMac::display_map_ = LAZY_INSTANCE_INITIALIZER; | 195 DisplayLinkMac::display_map_ = LAZY_INSTANCE_INITIALIZER; |
194 | 196 |
195 } // ui | 197 } // ui |
196 | 198 |
OLD | NEW |