1ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman// Copyright 2013 The Chromium Authors. All rights reserved.
2ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman// Use of this source code is governed by a BSD-style license that can be
3ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman// found in the LICENSE file.
4ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
5ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman#ifndef CC_TREES_LAYER_TREE_HOST_SINGLE_THREAD_CLIENT_H_
6ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman#define CC_TREES_LAYER_TREE_HOST_SINGLE_THREAD_CLIENT_H_
7ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
8ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohmannamespace cc {
9ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
10ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohmanclass LayerTreeHostSingleThreadClient {
11ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman public:
12ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // Request that the client schedule a composite.
13ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  virtual void ScheduleComposite() {}
14ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // Request that the client schedule a composite now, and calculate appropriate
15ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // delay for potential future frame.
16ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  virtual void ScheduleAnimation() {}
17ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
18ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // Called whenever the compositor posts a SwapBuffers (either full or
19ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // partial). After DidPostSwapBuffers(), exactly one of
20ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // DidCompleteSwapBuffers() or DidAbortSwapBuffers() will be called, thus
21ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // these functions can be used to keep track of pending swap buffers calls for
22ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  // rate limiting.
23ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  virtual void DidPostSwapBuffers() = 0;
24ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  virtual void DidCompleteSwapBuffers() = 0;
25ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  virtual void DidAbortSwapBuffers() = 0;
26ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
27ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman protected:
28ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman  virtual ~LayerTreeHostSingleThreadClient() {}
29ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman};
30ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
31ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman}  // namespace cc
32ef0b14593bb8dd5651606925584adb1ac1096ba5Dan Gohman
33081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson#endif  // CC_TREES_LAYER_TREE_HOST_SINGLE_THREAD_CLIENT_H_
34081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson