// 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/base/cc_export.h" namespace cc { class LayerTreeHost; 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 LayerTreeHost // 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 LayerTreeHost or LayerTreeHostImpl. class CC_EXPORT SwapPromiseMonitor { public: // If the monitor lives on the main thread, pass in layer_tree_host // 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(LayerTreeHost* layer_tree_host, LayerTreeHostImpl* layer_tree_host_impl); virtual ~SwapPromiseMonitor(); virtual void OnSetNeedsCommitOnMain() = 0; virtual void OnSetNeedsRedrawOnImpl() = 0; virtual void OnForwardScrollUpdateToMainThreadOnImpl() = 0; protected: LayerTreeHost* layer_tree_host_; LayerTreeHostImpl* layer_tree_host_impl_; }; } // namespace cc #endif // CC_TREES_SWAP_PROMISE_MONITOR_H_