diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-25 00:09:14 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-25 00:09:14 +0000 |
commit | 94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679 (patch) | |
tree | 530f51d5c75459999e4adf2a6895884ce1c15ce0 /cc/CCPriorityCalculator.cpp | |
parent | 56235947f2b023fc63cfad692c56df4e92199848 (diff) | |
download | chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.zip chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.tar.gz chromium_src-94f206c1c75eb8cc4df2225a1c5c9c7b6fc96679.tar.bz2 |
Here are gyp targets and stubs for compiling libcc and the webkit_compositor bindings in chromium. Everything is guarded behind the off-by-default use_libcc_for_compositor gyp variable. I haven't included the actual code here, but there are scripts to sync. I plan to land + manually sync the code into place until we're ready to flip the gyp switch.
Snapshot from r126652
BUG=
Review URL: https://chromiumcodereview.appspot.com/10828381
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153354 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/CCPriorityCalculator.cpp')
-rw-r--r-- | cc/CCPriorityCalculator.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/cc/CCPriorityCalculator.cpp b/cc/CCPriorityCalculator.cpp new file mode 100644 index 0000000..7e769f7 --- /dev/null +++ b/cc/CCPriorityCalculator.cpp @@ -0,0 +1,72 @@ +// Copyright 2012 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. + +#include "config.h" + +#include "CCPriorityCalculator.h" + +using namespace std; + +namespace WebCore { + +// static +int CCPriorityCalculator::uiPriority(bool drawsToRootSurface) +{ + return drawsToRootSurface ? -1 : 2; +} + +// static +int CCPriorityCalculator::visiblePriority(bool drawsToRootSurface) +{ + return drawsToRootSurface ? 0 : 3; +} + +// static +int CCPriorityCalculator::renderSurfacePriority() +{ + return 1; +} + +// static +int CCPriorityCalculator::lingeringPriority(int previousPriority) +{ + // FIXME: We should remove this once we have priorities for all + // textures (we can't currently calculate distances for + // off-screen textures). + int lingeringPriority = 1000000; + return min(numeric_limits<int>::max() - 1, + max(lingeringPriority, previousPriority)) + 1; +} + +namespace { +unsigned manhattanDistance(const IntRect& a, const IntRect& b) +{ + IntRect c = unionRect(a, b); + int x = max(0, c.width() - a.width() - b.width() + 1); + int y = max(0, c.height() - a.height() - b.height() + 1); + return (x + y); +} +} + +int CCPriorityCalculator::priorityFromDistance(const IntRect& visibleRect, const IntRect& textureRect, bool drawsToRootSurface) const +{ + unsigned distance = manhattanDistance(visibleRect, textureRect); + if (!distance) + return visiblePriority(drawsToRootSurface); + return visiblePriority(false) + distance; +} + +int CCPriorityCalculator::priorityFromDistance(unsigned pixels, bool drawsToRootSurface) const +{ + if (!pixels) + return visiblePriority(drawsToRootSurface); + return visiblePriority(false) + pixels; +} + +int CCPriorityCalculator::priorityFromVisibility(bool visible, bool drawsToRootSurface) const +{ + return visible ? visiblePriority(drawsToRootSurface) : lowestPriority(); +} + +} // WebCore |