| 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 |