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_BASE_SWAP_PROMISE_MONITOR_H_ 6 #define CC_BASE_SWAP_PROMISE_MONITOR_H_ 7 8 #include "cc/base/cc_export.h" 9 10 namespace cc { 11 12 class LayerTreeHost; 13 class LayerTreeHostImpl; 14 15 // A SwapPromiseMonitor is used to monitor compositor state change that 16 // should be associated with a SwapPromise, e.g. SetNeedsCommit() is 17 // called on main thread or SetNeedsRedraw() is called on impl thread. 18 // Creating a SwapPromiseMonitor will insert itself into a LayerTreeHost 19 // or LayerTreeHostImpl. You must provide a pointer to the appropriate 20 // structure to the monitor (and only one of the two). Notification of 21 // compositor state change will be sent through OnSetNeedsCommitOnMain() 22 // or OnSetNeedsRedrawOnImpl(). When SwapPromiseMonitor is destroyed, it 23 // will unregister itself from LayerTreeHost or LayerTreeHostImpl. 24 class CC_EXPORT SwapPromiseMonitor { 25 public: 26 // If the monitor lives on the main thread, pass in layer_tree_host 27 // and set layer_tree_host_impl to NULL. 28 // If the monitor lives on the impl thread, pass in layer_tree_host_impl 29 // and set layer_tree_host to NULL. 30 SwapPromiseMonitor(LayerTreeHost* layer_tree_host, 31 LayerTreeHostImpl* layer_tree_host_impl); 32 virtual ~SwapPromiseMonitor(); 33 34 virtual void OnSetNeedsCommitOnMain() = 0; 35 virtual void OnSetNeedsRedrawOnImpl() = 0; 36 37 protected: 38 LayerTreeHost* layer_tree_host_; 39 LayerTreeHostImpl* layer_tree_host_impl_; 40 }; 41 42 } // namespace cc 43 44 #endif // CC_BASE_SWAP_PROMISE_MONITOR_H_ 45