From 46f935002c2b25331e552520dc7b1a912e12dfdc Mon Sep 17 00:00:00 2001 From: "robertphillips@google.com" Date: Tue, 7 Aug 2012 15:38:08 +0000 Subject: Added SkClipStack portion of new clip mask caching system http://codereview.appspot.com/6449089/ git-svn-id: http://skia.googlecode.com/svn/trunk@4978 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/gpu/SkGpuDevice.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/gpu/SkGpuDevice.cpp') diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 9ed1ccbdf0..592cdfc6e6 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -345,16 +345,35 @@ void SkGpuDevice::writePixels(const SkBitmap& bitmap, int x, int y, config, bitmap.getPixels(), bitmap.rowBytes()); } +namespace { +void purgeClipCB(int genID, void* data) { + GrContext* context = (GrContext*) data; + + if (SkClipStack::kInvalidGenID == genID || + SkClipStack::kEmptyGenID == genID || + SkClipStack::kWideOpenGenID == genID) { + // none of these cases will have a cached clip mask + return; + } + +} +}; + void SkGpuDevice::onAttachToCanvas(SkCanvas* canvas) { INHERITED::onAttachToCanvas(canvas); // Canvas promises that this ptr is valid until onDetachFromCanvas is called fClipData.fClipStack = canvas->getClipStack(); + + fClipData.fClipStack->addPurgeClipCallback(purgeClipCB, fContext); } void SkGpuDevice::onDetachFromCanvas() { INHERITED::onDetachFromCanvas(); + // TODO: iterate through the clip stack and clean up any cached clip masks + fClipData.fClipStack->removePurgeClipCallback(purgeClipCB, fContext); + fClipData.fClipStack = NULL; } -- cgit v1.2.3