summaryrefslogtreecommitdiffstats
path: root/cc/layers/nine_patch_layer_impl.cc
diff options
context:
space:
mode:
authorccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-20 23:42:38 +0000
committerccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-20 23:42:38 +0000
commit9eceee88a34f09756418e5925ec026a29d3c549d (patch)
treeece610136b6797edbe94731ab0a2d47178ae544b /cc/layers/nine_patch_layer_impl.cc
parent3de3afcb22300568e0676904c7d3e9f90743e903 (diff)
downloadchromium_src-9eceee88a34f09756418e5925ec026a29d3c549d.zip
chromium_src-9eceee88a34f09756418e5925ec026a29d3c549d.tar.gz
chromium_src-9eceee88a34f09756418e5925ec026a29d3c549d.tar.bz2
Fix crashes when NinePatchLayer doesn't have a resource.
First issue is that if NinePatchLayer doesn't get a ResourceId because of memory pressure, it will DCHECK. This is a valid situation -- just draw nothing (checkerboard would be okay as well). Second issue is that NinePatchLayer passes the ResourceId in for the texture in PushPropertiesTo, but does not call SetNeedsPushProperties when painting a new resource. The documentation of Layer::Update suggests that a side-effect of returning true from Layer::Update is that SetNeedsCommit will be called ont this layer, but this is not the case. BUG=133097 Review URL: https://chromiumcodereview.appspot.com/22911024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218574 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layers/nine_patch_layer_impl.cc')
-rw-r--r--cc/layers/nine_patch_layer_impl.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/cc/layers/nine_patch_layer_impl.cc b/cc/layers/nine_patch_layer_impl.cc
index 103f765..4274bf0 100644
--- a/cc/layers/nine_patch_layer_impl.cc
+++ b/cc/layers/nine_patch_layer_impl.cc
@@ -64,12 +64,13 @@ bool NinePatchLayerImpl::WillDraw(DrawMode draw_mode,
void NinePatchLayerImpl::AppendQuads(QuadSink* quad_sink,
AppendQuadsData* append_quads_data) {
- DCHECK(resource_id_);
-
SharedQuadState* shared_quad_state =
quad_sink->UseSharedQuadState(CreateSharedQuadState());
AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
+ if (!resource_id_)
+ return;
+
static const bool flipped = false;
static const bool premultiplied_alpha = true;