blob: 83f34392c1e97fdc50748c170dc56afee20d55ae [file] [log] [blame]
Avi Drissman3f7a9d82022-09-08 20:55:421// Copyright 2018 The Chromium Authors
Fady Samuelb46e0ef2018-01-30 04:48:412// 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 Levin6220cb62018-04-05 02:44:387#include <limits>
8
Khushal4898c97a2021-06-16 16:30:559#include "base/notreached.h"
10#include "base/strings/stringprintf.h"
11
Fady Samuelb46e0ef2018-01-30 04:48:4112namespace cc {
Khushal4898c97a2021-06-16 16:30:5513namespace {
14
15const 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 Samuelb46e0ef2018-01-30 04:48:4131
32// static
33DeadlinePolicy DeadlinePolicy::UseExistingDeadline() {
34 return DeadlinePolicy(Type::kUseExistingDeadline);
35}
36
37// static
38DeadlinePolicy DeadlinePolicy::UseDefaultDeadline() {
39 return DeadlinePolicy(Type::kUseDefaultDeadline);
40}
41
42// static
43DeadlinePolicy DeadlinePolicy::UseSpecifiedDeadline(
44 uint32_t deadline_in_frames) {
Vladimir Levin6220cb62018-04-05 02:44:3845 return DeadlinePolicy(Type::kUseSpecifiedDeadline, deadline_in_frames);
Fady Samuelb46e0ef2018-01-30 04:48:4146}
47
Vladimir Levin6220cb62018-04-05 02:44:3848// static
49DeadlinePolicy DeadlinePolicy::UseInfiniteDeadline() {
50 return DeadlinePolicy(Type::kUseInfiniteDeadline,
51 std::numeric_limits<uint32_t>::max());
Fady Samuelb46e0ef2018-01-30 04:48:4152}
53
Vladimir Levin6220cb62018-04-05 02:44:3854DeadlinePolicy::DeadlinePolicy(Type policy_type,
Anton Bikineev1b060a72021-05-14 23:15:3455 absl::optional<uint32_t> deadline_in_frames)
Vladimir Levin6220cb62018-04-05 02:44:3856 : policy_type_(policy_type), deadline_in_frames_(deadline_in_frames) {}
Fady Samuelb46e0ef2018-01-30 04:48:4157
58DeadlinePolicy::DeadlinePolicy(const DeadlinePolicy& other) = default;
59
Khushal4898c97a2021-06-16 16:30:5560std::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 Samuelb46e0ef2018-01-30 04:48:4166} // namespace cc