summaryrefslogtreecommitdiffstats
path: root/cc/blink/web_display_item_list_impl.cc
diff options
context:
space:
mode:
authorajuma <ajuma@chromium.org>2015-02-12 09:46:43 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-12 17:47:27 +0000
commita727ffce6d321dc5c05dcaa096b40394aa4370cc (patch)
tree2169b83f5767868ef3583ab930e085dc23de84ce /cc/blink/web_display_item_list_impl.cc
parentfaa39fa701d993eff9dae003354259d2aec253b1 (diff)
downloadchromium_src-a727ffce6d321dc5c05dcaa096b40394aa4370cc.zip
chromium_src-a727ffce6d321dc5c05dcaa096b40394aa4370cc.tar.gz
chromium_src-a727ffce6d321dc5c05dcaa096b40394aa4370cc.tar.bz2
cc: Use FilterOperations instead of SkImageFilter in FilterDisplayItem
This replaces FilterDisplayItem's SkImageFilter with FilterOperations. Currently, filters on Layers are set using FilterOperations; this allows filters to be animated on the compositor thread. Using FilterOperations rather than an SkImageFilter in FilterDisplayItems will allow cc to continue to be able to animate filters once cc becomes responsible for layerization decisions. The Blink side of this is http://crrev.com/875423003 BUG=453924 Review URL: https://codereview.chromium.org/904513004 Cr-Commit-Position: refs/heads/master@{#315996}
Diffstat (limited to 'cc/blink/web_display_item_list_impl.cc')
-rw-r--r--cc/blink/web_display_item_list_impl.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/cc/blink/web_display_item_list_impl.cc b/cc/blink/web_display_item_list_impl.cc
index fdd05df..879857c 100644
--- a/cc/blink/web_display_item_list_impl.cc
+++ b/cc/blink/web_display_item_list_impl.cc
@@ -7,6 +7,7 @@
#include <vector>
#include "cc/blink/web_blend_mode.h"
+#include "cc/blink/web_filter_operations_impl.h"
#include "cc/resources/clip_display_item.h"
#include "cc/resources/clip_path_display_item.h"
#include "cc/resources/drawing_display_item.h"
@@ -95,12 +96,26 @@ void WebDisplayItemListImpl::appendEndTransparencyItem() {
display_item_list_->AppendItem(cc::EndTransparencyDisplayItem::Create());
}
+#if FILTER_DISPLAY_ITEM_USES_FILTER_OPERATIONS
+void WebDisplayItemListImpl::appendFilterItem(
+ const blink::WebFilterOperations& filters,
+ const blink::WebFloatRect& bounds) {
+ const WebFilterOperationsImpl& filters_impl =
+ static_cast<const WebFilterOperationsImpl&>(filters);
+ display_item_list_->AppendItem(
+ cc::FilterDisplayItem::Create(filters_impl.AsFilterOperations(), bounds));
+}
+#else
void WebDisplayItemListImpl::appendFilterItem(
SkImageFilter* filter,
const blink::WebFloatRect& bounds) {
+ cc::FilterOperations filter_operations;
+ filter_operations.Append(
+ cc::FilterOperation::CreateReferenceFilter(skia::SharePtr(filter)));
display_item_list_->AppendItem(
- cc::FilterDisplayItem::Create(skia::SharePtr(filter), bounds));
+ cc::FilterDisplayItem::Create(filter_operations, bounds));
}
+#endif
void WebDisplayItemListImpl::appendEndFilterItem() {
display_item_list_->AppendItem(cc::EndFilterDisplayItem::Create());