1c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// found in the LICENSE file.
4c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
5c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#ifndef WebBeginFrameArgs_h
6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#define WebBeginFrameArgs_h
7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)struct WebBeginFrameArgs {
117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    WebBeginFrameArgs(double lastFrameTimeMonotonic, double deadline, double interval)
127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        : lastFrameTimeMonotonic(lastFrameTimeMonotonic)
137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        , deadline(deadline)
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        , interval(interval)
157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    { }
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // TODO: Remove this constructor once Chromium has been updated.
18c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    WebBeginFrameArgs(double lastFrameTimeMonotonic)
19c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)        : lastFrameTimeMonotonic(lastFrameTimeMonotonic)
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        , deadline(0)
217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        , interval(0)
22c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    { }
23c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
24c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    // FIXME: Upgrade the time in CLOCK_MONOTONIC values to use a TimeTick like
25c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    // class rather than a bare double.
26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    // FIXME: Extend this class to include the fields from Chrome
28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    // BeginFrameArgs structure.
29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    // Time in CLOCK_MONOTONIC that is the most recent vsync time.
31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    double lastFrameTimeMonotonic;
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Time in CLOCK_MONOTONIC by which the renderer should finish producing the current frame. 0 means a deadline wasn't set.
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double deadline;
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Expected delta between two successive frame times. 0 if a regular interval isn't available.
377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double interval;
38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)};
39c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
42c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#endif
43