Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/image/SkImageShader.cpp

Issue 2222593003: use tmp allocator for images in temp shaders (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBitmapProcShader.h" 8 #include "SkBitmapProcShader.h"
9 #include "SkBitmapProvider.h" 9 #include "SkBitmapProvider.h"
10 #include "SkColorShader.h" 10 #include "SkColorShader.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 234
235 sk_sp<SkShader> SkMakeBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, 235 sk_sp<SkShader> SkMakeBitmapShader(const SkBitmap& src, SkShader::TileMode tmx,
236 SkShader::TileMode tmy, const SkMatrix* local Matrix, 236 SkShader::TileMode tmy, const SkMatrix* local Matrix,
237 SkCopyPixelsMode cpm, SkTBlitterAllocator* al locator) { 237 SkCopyPixelsMode cpm, SkTBlitterAllocator* al locator) {
238 // Until we learn otherwise, it seems that any caller that is passing an all ocator must be 238 // Until we learn otherwise, it seems that any caller that is passing an all ocator must be
239 // assuming that the returned shader will have a stack-frame lifetime, so we assert that 239 // assuming that the returned shader will have a stack-frame lifetime, so we assert that
240 // they are also asking for kNever_SkCopyPixelsMode. If that proves otherwis e, we can remove 240 // they are also asking for kNever_SkCopyPixelsMode. If that proves otherwis e, we can remove
241 // or modify this assert. 241 // or modify this assert.
242 SkASSERT(!allocator || (kNever_SkCopyPixelsMode == cpm)); 242 SkASSERT(!allocator || (kNever_SkCopyPixelsMode == cpm));
243 243
244 return SkImageShader::Make(SkMakeImageFromRasterBitmap(src, cpm).get(), 244 return SkImageShader::Make(SkMakeImageFromRasterBitmap(src, cpm, allocator). get(),
245 tmx, tmy, localMatrix, allocator); 245 tmx, tmy, localMatrix, allocator);
246 } 246 }
247 247
248 static sk_sp<SkFlattenable> SkBitmapProcShader_CreateProc(SkReadBuffer& buffer) { 248 static sk_sp<SkFlattenable> SkBitmapProcShader_CreateProc(SkReadBuffer& buffer) {
249 SkMatrix lm; 249 SkMatrix lm;
250 buffer.readMatrix(&lm); 250 buffer.readMatrix(&lm);
251 SkBitmap bm; 251 SkBitmap bm;
252 if (!buffer.readBitmap(&bm)) { 252 if (!buffer.readBitmap(&bm)) {
253 return nullptr; 253 return nullptr;
254 } 254 }
255 bm.setImmutable(); 255 bm.setImmutable();
256 SkShader::TileMode mx = (SkShader::TileMode)buffer.readUInt(); 256 SkShader::TileMode mx = (SkShader::TileMode)buffer.readUInt();
257 SkShader::TileMode my = (SkShader::TileMode)buffer.readUInt(); 257 SkShader::TileMode my = (SkShader::TileMode)buffer.readUInt();
258 return SkShader::MakeBitmapShader(bm, mx, my, &lm); 258 return SkShader::MakeBitmapShader(bm, mx, my, &lm);
259 } 259 }
260 260
261 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkShader) 261 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkShader)
262 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageShader) 262 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkImageShader)
263 SkFlattenable::Register("SkBitmapProcShader", SkBitmapProcShader_CreateProc, kSk Shader_Type); 263 SkFlattenable::Register("SkBitmapProcShader", SkBitmapProcShader_CreateProc, kSk Shader_Type);
264 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 264 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
265 265
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698