Partial fix for Skia issue 1769: GenerateGMs crashing (out of memory)

GenerateGMs was crashing because we were adding genID listeners for
textures even when creation failed -- in this case the key generated
is not valid, so when it comes time to purge it, it triggers an
assert and then an apparent crash. The solution is to not add
a genID listener in this case.

This doesn't solve the problem of running out of memory, it just prevents it
from causing a crash in Debug builds.

BUG=
R=bsalomon@google.com, robertphillips@google.com, mtklein@google.com

Author: jvanverth@google.com

Review URL: https://codereview.chromium.org/55023005

git-svn-id: http://skia.googlecode.com/svn/trunk@12062 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
commit-bot@chromium.org 2013-10-31 20:22:47 +00:00
parent 908f1270c7
commit 3843f3fc89

View File

@ -141,7 +141,9 @@ static GrTexture* sk_gr_create_bitmap_texture(GrContext* ctx,
GrResourceKey key;
GrTexture* result = ctx->createTexture(params, desc, cacheID,
storage.get(), bitmap->width(), &key);
add_genID_listener(key, origBitmap.pixelRef());
if (NULL != result) {
add_genID_listener(key, origBitmap.pixelRef());
}
return result;
} else {
GrTexture* result = ctx->lockAndRefScratchTexture(desc,
@ -171,7 +173,9 @@ static GrTexture* sk_gr_create_bitmap_texture(GrContext* ctx,
GrResourceKey key;
GrTexture* result = ctx->createTexture(params, desc, cacheID,
bitmap->getPixels(), bitmap->rowBytes(), &key);
add_genID_listener(key, origBitmap.pixelRef());
if (NULL != result) {
add_genID_listener(key, origBitmap.pixelRef());
}
return result;
} else {
// This texture is unlikely to be used again (in its present form) so