chromium/components/viz/service/display/frame_interval_decider.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_VIZ_SERVICE_DISPLAY_FRAME_INTERVAL_DECIDER_H_
#define COMPONENTS_VIZ_SERVICE_DISPLAY_FRAME_INTERVAL_DECIDER_H_

#include <memory>
#include <optional>
#include <vector>

#include "base/containers/flat_map.h"
#include "base/memory/raw_ref.h"
#include "base/time/time.h"
#include "components/viz/common/quads/frame_interval_inputs.h"
#include "components/viz/common/surfaces/surface_id.h"
#include "components/viz/service/display/frame_interval_matchers.h"
#include "components/viz/service/surfaces/surface_observer.h"
#include "components/viz/service/viz_service_export.h"
#include "third_party/abseil-cpp/absl/types/variant.h"

namespace viz {
class SurfaceManager;

// This class computes the ideal frame interval the display should use. It does
// this by using an ordered list of `FrameIntervalMatcher`. Matchers should
// generally be stateless to support updating the list at run time. This is the
// replacement for `FrameRateDecider`.
class VIZ_SERVICE_EXPORT FrameIntervalDecider {};

}  // namespace viz

#endif  // COMPONENTS_VIZ_SERVICE_DISPLAY_FRAME_INTERVAL_DECIDER_H_