check texture is not NULL to aovid segmentation fault. If the texture created by GrLockAndRefCachedBitmapTexture() is NULL, ColorTableEffect::Create will cause segmentation fault by GrAssert in src/gpu/GrTextureAccess.cpp. The simple patch checked texture to avoid segment fault, and returned a NULL effect to the caller. The caller will handle NULL effect, for example, it will set default effect.
R=bsalomon@google.com, robertphillips@google.com Author: yunchao.he@intel.com Review URL: https://chromiumcodereview.appspot.com/15824003 git-svn-id: http://skia.googlecode.com/svn/trunk@9287 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
454ae46814
commit
c7d624ec53
@ -386,15 +386,18 @@ GrEffectRef* ColorTableEffect::TestCreate(SkMWCRandom* random,
|
||||
|
||||
GrEffectRef* SkTable_ColorFilter::asNewEffect(GrContext* context) const {
|
||||
SkBitmap bitmap;
|
||||
GrEffectRef* effect = NULL;
|
||||
this->asComponentTable(&bitmap);
|
||||
// passing NULL because this effect does no tiling or filtering.
|
||||
GrTexture* texture = GrLockAndRefCachedBitmapTexture(context, bitmap, NULL);
|
||||
GrEffectRef* effect = ColorTableEffect::Create(texture, fFlags);
|
||||
if (NULL != texture) {
|
||||
effect = ColorTableEffect::Create(texture, fFlags);
|
||||
|
||||
// Unlock immediately, this is not great, but we don't have a way of
|
||||
// knowing when else to unlock it currently. TODO: Remove this when
|
||||
// unref becomes the unlock replacement for all types of textures.
|
||||
GrUnlockAndUnrefCachedBitmapTexture(texture);
|
||||
// Unlock immediately, this is not great, but we don't have a way of
|
||||
// knowing when else to unlock it currently. TODO: Remove this when
|
||||
// unref becomes the unlock replacement for all types of textures.
|
||||
GrUnlockAndUnrefCachedBitmapTexture(texture);
|
||||
}
|
||||
return effect;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user