summaryrefslogtreecommitdiffstats
path: root/cc/trees/layer_tree_impl.h
diff options
context:
space:
mode:
authoraelias <aelias@chromium.org>2014-12-03 17:04:40 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-04 01:06:00 +0000
commit58eec0810c6412fb9debb83754bd0e5a65cecdc6 (patch)
tree8c36e88e33ce9728121b212eb285ffaddac26638 /cc/trees/layer_tree_impl.h
parent6657c7a9f11b17e3a378b0bb2112ecc314ec9cad (diff)
downloadchromium_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.h47
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_;