From ed052915917c370d6e08fb389573fe0e0f4a4865 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 21 Nov 2016 18:55:00 -0500 Subject: [PATCH] Bug 1313135 - Make an early return if the clip rect can be ignored. r=mchang --HG-- extra : rebase_source : 3e1b5c15398a2536528c5b8799d2272ee4d07c66 --- gfx/skia/skia/src/gpu/GrClipStackClip.cpp | 3 ++- gfx/skia/skia/src/utils/SkLua.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gfx/skia/skia/src/gpu/GrClipStackClip.cpp b/gfx/skia/skia/src/gpu/GrClipStackClip.cpp index 7694a3f40320..b25bcf29dc40 100644 --- a/gfx/skia/skia/src/gpu/GrClipStackClip.cpp +++ b/gfx/skia/skia/src/gpu/GrClipStackClip.cpp @@ -269,7 +269,8 @@ bool GrClipStackClip::apply(GrContext* context, GrDrawContext* drawContext, bool } SkRect devBounds = SkRect::MakeIWH(drawContext->width(), drawContext->height()); - if (!devBounds.intersect(out->clippedDrawBounds())) { + if (!devBounds.intersect(out->clippedDrawBounds()) || + GrClip::GetPixelIBounds(devBounds).isEmpty()) { return false; } diff --git a/gfx/skia/skia/src/utils/SkLua.cpp b/gfx/skia/skia/src/utils/SkLua.cpp index ba311af61ca3..9eb6f0b273f4 100644 --- a/gfx/skia/skia/src/utils/SkLua.cpp +++ b/gfx/skia/skia/src/utils/SkLua.cpp @@ -8,6 +8,7 @@ #include "SkLua.h" #if SK_SUPPORT_GPU +#include "GrClip.h" #include "GrReducedClip.h" #endif @@ -642,6 +643,8 @@ int SkLua::lcanvas_getReducedClipStack(lua_State* L) { #if SK_SUPPORT_GPU const SkCanvas* canvas = get_ref(L, 1); SkRect queryBounds = SkRect::Make(canvas->getTopLayerBounds()); + SkASSERT(!GrClip::GetPixelIBounds(queryBounds).isEmpty()); + const GrReducedClip reducedClip(*canvas->getClipStack(), queryBounds); GrReducedClip::ElementList::Iter iter(reducedClip.elements());