1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CC_OUTPUT_BEGIN_FRAME_ARGS_H_ 6 #define CC_OUTPUT_BEGIN_FRAME_ARGS_H_ 7 8 #include "base/time/time.h" 9 #include "base/values.h" 10 #include "cc/base/cc_export.h" 11 12 namespace cc { 13 14 struct CC_EXPORT BeginFrameArgs { 15 // Creates an invalid set of values. 16 BeginFrameArgs(); 17 18 // You should be able to find all instances where a BeginFrame has been 19 // created by searching for "BeginFrameArgs::Create". 20 static BeginFrameArgs Create(base::TimeTicks frame_time, 21 base::TimeTicks deadline, 22 base::TimeDelta interval); 23 static BeginFrameArgs CreateForSynchronousCompositor( 24 base::TimeTicks now = base::TimeTicks()); 25 26 // This is the default delta that will be used to adjust the deadline when 27 // proper draw-time estimations are not yet available. 28 static base::TimeDelta DefaultEstimatedParentDrawTime(); 29 30 // This is the default interval to use to avoid sprinkling the code with 31 // magic numbers. 32 static base::TimeDelta DefaultInterval(); 33 34 // This is the default amount of time after the frame_time to retroactively 35 // send a BeginFrame that had been skipped. This only has an effect if the 36 // deadline has passed, since the deadline is also used to trigger BeginFrame 37 // retroactively. 38 static base::TimeDelta DefaultRetroactiveBeginFramePeriod(); 39 40 bool IsValid() const { return interval >= base::TimeDelta(); } 41 42 scoped_ptr<base::Value> AsValue() const; 43 44 base::TimeTicks frame_time; 45 base::TimeTicks deadline; 46 base::TimeDelta interval; 47 48 private: 49 BeginFrameArgs(base::TimeTicks frame_time, 50 base::TimeTicks deadline, 51 base::TimeDelta interval); 52 }; 53 54 } // namespace cc 55 56 #endif // CC_OUTPUT_BEGIN_FRAME_ARGS_H_ 57