diff options
author | aelias <aelias@chromium.org> | 2014-12-03 17:04:40 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-04 01:06:00 +0000 |
commit | 58eec0810c6412fb9debb83754bd0e5a65cecdc6 (patch) | |
tree | 8c36e88e33ce9728121b212eb285ffaddac26638 /cc/trees/layer_tree_impl.h | |
parent | 6657c7a9f11b17e3a378b0bb2112ecc314ec9cad (diff) | |
download | chromium_src-58eec0810c6412fb9debb83754bd0e5a65cecdc6.zip chromium_src-58eec0810c6412fb9debb83754bd0e5a65cecdc6.tar.gz chromium_src-58eec0810c6412fb9debb83754bd0e5a65cecdc6.tar.bz2 |
Refactor delta/sent_delta logic into self-contained abstraction.
This patch updates page scale to use a new SyncedProperty abstraction. This
is shared between the pending and active trees and contains all page scale state
on the impl side except for the min/max limits. Its API only exposes those
operations that are encouraged: for example, the raw main-thread originating value
can no longer be used by accident.
This patch should be a no-op. In future patches, I intend to make scroll offsets
and top controls use this abstraction as well.
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/764483002
Cr-Commit-Position: refs/heads/master@{#306736}
Diffstat (limited to 'cc/trees/layer_tree_impl.h')
-rw-r--r-- | cc/trees/layer_tree_impl.h | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h index ef4f877..d88cd48 100644 --- a/cc/trees/layer_tree_impl.h +++ b/cc/trees/layer_tree_impl.h @@ -14,6 +14,7 @@ #include "base/values.h" #include "cc/base/scoped_ptr_vector.h" #include "cc/base/swap_promise.h" +#include "cc/base/synced_property.h" #include "cc/layers/layer_impl.h" #include "cc/output/renderer.h" #include "cc/resources/ui_resource_client.h" @@ -53,8 +54,10 @@ typedef std::list<UIResourceRequest> UIResourceRequestQueue; class CC_EXPORT LayerTreeImpl { public: static scoped_ptr<LayerTreeImpl> create( - LayerTreeHostImpl* layer_tree_host_impl) { - return make_scoped_ptr(new LayerTreeImpl(layer_tree_host_impl)); + LayerTreeHostImpl* layer_tree_host_impl, + scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor) { + return make_scoped_ptr( + new LayerTreeImpl(layer_tree_host_impl, page_scale_factor)); } virtual ~LayerTreeImpl(); @@ -161,23 +164,20 @@ class CC_EXPORT LayerTreeImpl { has_transparent_background_ = transparent; } - void SetPageScaleFactorAndLimits(float page_scale_factor, - float min_page_scale_factor, float max_page_scale_factor); - void SetPageScaleDelta(float delta); - void SetPageScaleValues(float page_scale_factor, - float min_page_scale_factor, float max_page_scale_factor, - float page_scale_delta); - float total_page_scale_factor() const { - return page_scale_factor_ * page_scale_delta_; + void SetPageScaleOnActiveTree(float active_page_scale); + void PushPageScaleFromMainThread(float page_scale_factor, + float min_page_scale_factor, + float max_page_scale_factor); + float current_page_scale_factor() const { + return page_scale_factor()->Current(IsActiveTree()); } - float page_scale_factor() const { return page_scale_factor_; } float min_page_scale_factor() const { return min_page_scale_factor_; } float max_page_scale_factor() const { return max_page_scale_factor_; } - float page_scale_delta() const { return page_scale_delta_; } - void set_sent_page_scale_delta(float delta) { - sent_page_scale_delta_ = delta; - } - float sent_page_scale_delta() const { return sent_page_scale_delta_; } + + float page_scale_delta() const { return page_scale_factor()->Delta(); } + + SyncedProperty<ScaleGroup>* page_scale_factor(); + const SyncedProperty<ScaleGroup>* page_scale_factor() const; // Updates draw properties and render surface layer list, as well as tile // priorities. Returns false if it was unable to update. @@ -321,8 +321,17 @@ class CC_EXPORT LayerTreeImpl { scoped_ptr<PendingPageScaleAnimation> TakePendingPageScaleAnimation(); protected: - explicit LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl); + explicit LayerTreeImpl( + LayerTreeHostImpl* layer_tree_host_impl, + scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor); void ReleaseResourcesRecursive(LayerImpl* current); + float ClampPageScaleFactorToLimits(float page_scale_factor) const; + void PushPageScaleFactorAndLimits(const float* page_scale_factor, + float min_page_scale_factor, + float max_page_scale_factor); + bool SetPageScaleFactorLimits(float min_page_scale_factor, + float max_page_scale_factor); + void DidUpdatePageScale(); LayerTreeHostImpl* layer_tree_host_impl_; int source_frame_number_; @@ -345,9 +354,7 @@ class CC_EXPORT LayerTreeImpl { LayerSelectionBound selection_start_; LayerSelectionBound selection_end_; - float page_scale_factor_; - float page_scale_delta_; - float sent_page_scale_delta_; + scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor_; float min_page_scale_factor_; float max_page_scale_factor_; |