| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CC_TREES_SWAP_PROMISE_MONITOR_H_ |
| #define CC_TREES_SWAP_PROMISE_MONITOR_H_ |
| |
| #include "cc/cc_export.h" |
| |
| namespace cc { |
| |
| class SwapPromiseManager; |
| class LayerTreeHostImpl; |
| |
| // A SwapPromiseMonitor is used to monitor compositor state change that |
| // should be associated with a SwapPromise, e.g. SetNeedsCommit() is |
| // called on main thread or SetNeedsRedraw() is called on impl thread. |
| // Creating a SwapPromiseMonitor will insert itself into a SwapPromiseManager |
| // or LayerTreeHostImpl. You must provide a pointer to the appropriate |
| // structure to the monitor (and only one of the two). Notification of |
| // compositor state change will be sent through OnSetNeedsCommitOnMain() |
| // or OnSetNeedsRedrawOnImpl(). When SwapPromiseMonitor is destroyed, it |
| // will unregister itself from SwapPromiseManager or LayerTreeHostImpl. |
| class CC_EXPORT SwapPromiseMonitor { |
| public: |
| // If the monitor lives on the main thread, pass in swap_promise_manager tied |
| // to the LayerTreeHost and set layer_tree_host_impl to nullptr. |
| // If the monitor lives on the impl thread, pass in layer_tree_host_impl |
| // and set layer_tree_host to nullptr. |
| SwapPromiseMonitor(SwapPromiseManager* swap_promise_managaer, |
| LayerTreeHostImpl* layer_tree_host_impl); |
| virtual ~SwapPromiseMonitor(); |
| |
| virtual void OnSetNeedsCommitOnMain() = 0; |
| virtual void OnSetNeedsRedrawOnImpl() = 0; |
| virtual void OnForwardScrollUpdateToMainThreadOnImpl() = 0; |
| |
| protected: |
| SwapPromiseManager* swap_promise_manager_; |
| LayerTreeHostImpl* layer_tree_host_impl_; |
| }; |
| |
| } // namespace cc |
| |
| #endif // CC_TREES_SWAP_PROMISE_MONITOR_H_ |