aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/effects/SkMergeImageFilter.h
diff options
context:
space:
mode:
authorGravatar senorblanco <senorblanco@chromium.org>2014-08-26 12:27:12 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-08-26 12:27:12 -0700
commit5e5f948b6b363dbfc8c076d8ff0c6b8e9ea99958 (patch)
tree1f3b8fdb8dc30a897119f3ce25e347cdaad94391 /include/effects/SkMergeImageFilter.h
parent21aed57023bad4b04076c59e37097c7563efc028 (diff)
Reimplement deserialization of SkImageFilter's uniqueID.
9fa60d ("Simplify flattening to just write enough ... ") simplified just a tad too much. In particular, it disabled deserialization of SkImageFilter's uniqueID, which in turn caused the failure of SkImageFilter's cache, which caused a large regression in Chrome's SVG filter performance. The medium-term fix is to switch to the new SkRecordDraw SkPicture backend, which will make the unique IDs unnecessary. This change is an "in case of emergecy" CL, in the event that there are problems switching on the new backend in Chrome. For that reason, it's minimalist: only the filters used by Chrome are modified, and whitespace changes are kept to a minimum. In this way, it should be easy to revert once the new backend goes in. R=reed@google.com Author: senorblanco@chromium.org Review URL: https://codereview.chromium.org/503833002
Diffstat (limited to 'include/effects/SkMergeImageFilter.h')
-rw-r--r--include/effects/SkMergeImageFilter.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/effects/SkMergeImageFilter.h b/include/effects/SkMergeImageFilter.h
index a9a14a95cd..5e723aa290 100644
--- a/include/effects/SkMergeImageFilter.h
+++ b/include/effects/SkMergeImageFilter.h
@@ -18,15 +18,17 @@ public:
static SkMergeImageFilter* Create(SkImageFilter* first, SkImageFilter* second,
SkXfermode::Mode mode = SkXfermode::kSrcOver_Mode,
- const CropRect* cropRect = NULL) {
+ const CropRect* cropRect = NULL,
+ uint32_t uniqueID = 0) {
SkImageFilter* inputs[2] = { first, second };
SkXfermode::Mode modes[2] = { mode, mode };
- return SkNEW_ARGS(SkMergeImageFilter, (inputs, 2, modes, cropRect));
+ return SkNEW_ARGS(SkMergeImageFilter, (inputs, 2, modes, cropRect, uniqueID));
}
static SkMergeImageFilter* Create(SkImageFilter* filters[], int count,
const SkXfermode::Mode modes[] = NULL,
- const CropRect* cropRect = NULL) {
- return SkNEW_ARGS(SkMergeImageFilter, (filters, count, modes, cropRect));
+ const CropRect* cropRect = NULL,
+ uint32_t uniqueID = 0) {
+ return SkNEW_ARGS(SkMergeImageFilter, (filters, count, modes, cropRect, uniqueID));
}
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMergeImageFilter)
@@ -34,7 +36,8 @@ public:
protected:
SkMergeImageFilter(SkImageFilter* filters[], int count,
const SkXfermode::Mode modes[],
- const CropRect* cropRect);
+ const CropRect* cropRect,
+ uint32_t uniqueID);
#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
explicit SkMergeImageFilter(SkReadBuffer& buffer);
#endif