Avi Drissman | 3f7a9d8 | 2022-09-08 20:55:42 | [diff] [blame] | 1 | // Copyright 2018 The Chromium Authors |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "cc/layers/deadline_policy.h" |
| 6 | |
Vladimir Levin | 6220cb6 | 2018-04-05 02:44:38 | [diff] [blame] | 7 | #include <limits> |
| 8 | |
Khushal | 4898c97a | 2021-06-16 16:30:55 | [diff] [blame] | 9 | #include "base/notreached.h" |
| 10 | #include "base/strings/stringprintf.h" |
| 11 | |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 12 | namespace cc { |
Khushal | 4898c97a | 2021-06-16 16:30:55 | [diff] [blame] | 13 | namespace { |
| 14 | |
| 15 | const char* PolicyToString(DeadlinePolicy::Type type) { |
| 16 | switch (type) { |
| 17 | case DeadlinePolicy::Type::kUseExistingDeadline: |
| 18 | return "UseExistingDeadline"; |
| 19 | case DeadlinePolicy::Type::kUseDefaultDeadline: |
| 20 | return "UseDefaultDeadline"; |
| 21 | case DeadlinePolicy::Type::kUseSpecifiedDeadline: |
| 22 | return "UseSpecifiedDeadline"; |
| 23 | case DeadlinePolicy::Type::kUseInfiniteDeadline: |
| 24 | return "UseInfiniteDeadline"; |
| 25 | } |
| 26 | NOTREACHED(); |
| 27 | return ""; |
| 28 | } |
| 29 | |
| 30 | } // namespace |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 31 | |
| 32 | // static |
| 33 | DeadlinePolicy DeadlinePolicy::UseExistingDeadline() { |
| 34 | return DeadlinePolicy(Type::kUseExistingDeadline); |
| 35 | } |
| 36 | |
| 37 | // static |
| 38 | DeadlinePolicy DeadlinePolicy::UseDefaultDeadline() { |
| 39 | return DeadlinePolicy(Type::kUseDefaultDeadline); |
| 40 | } |
| 41 | |
| 42 | // static |
| 43 | DeadlinePolicy DeadlinePolicy::UseSpecifiedDeadline( |
| 44 | uint32_t deadline_in_frames) { |
Vladimir Levin | 6220cb6 | 2018-04-05 02:44:38 | [diff] [blame] | 45 | return DeadlinePolicy(Type::kUseSpecifiedDeadline, deadline_in_frames); |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 46 | } |
| 47 | |
Vladimir Levin | 6220cb6 | 2018-04-05 02:44:38 | [diff] [blame] | 48 | // static |
| 49 | DeadlinePolicy DeadlinePolicy::UseInfiniteDeadline() { |
| 50 | return DeadlinePolicy(Type::kUseInfiniteDeadline, |
| 51 | std::numeric_limits<uint32_t>::max()); |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 52 | } |
| 53 | |
Vladimir Levin | 6220cb6 | 2018-04-05 02:44:38 | [diff] [blame] | 54 | DeadlinePolicy::DeadlinePolicy(Type policy_type, |
Anton Bikineev | 1b060a7 | 2021-05-14 23:15:34 | [diff] [blame] | 55 | absl::optional<uint32_t> deadline_in_frames) |
Vladimir Levin | 6220cb6 | 2018-04-05 02:44:38 | [diff] [blame] | 56 | : policy_type_(policy_type), deadline_in_frames_(deadline_in_frames) {} |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 57 | |
| 58 | DeadlinePolicy::DeadlinePolicy(const DeadlinePolicy& other) = default; |
| 59 | |
Khushal | 4898c97a | 2021-06-16 16:30:55 | [diff] [blame] | 60 | std::string DeadlinePolicy::ToString() const { |
| 61 | return base::StringPrintf("DeadlinePolicy(%s, %d)", |
| 62 | PolicyToString(policy_type_), |
| 63 | deadline_in_frames_.value_or(-1)); |
| 64 | } |
| 65 | |
Fady Samuel | b46e0ef | 2018-01-30 04:48:41 | [diff] [blame] | 66 | } // namespace cc |