diff options
author | 2014-02-11 11:46:49 -0500 | |
---|---|---|
committer | 2014-02-12 11:26:06 -0500 | |
commit | e889298cd6ae1fc0d76bc00d7d12586db03eb261 (patch) | |
tree | a2f5114d1ea5ff1265e28e2b01b4750d5d2741f3 /libs/hwui/DeferredLayerUpdater.cpp | |
parent | 826e51c4da2beac50c0ed1e1359787a0b69c878c (diff) |
Refactor setting an SkPaint onto a hwui Layer.
This CL removes the unecessary JNI call to set the colorFilter on
a layer.
Change-Id: I9e088f888938d4315745aa618334bfdb9e61343a
Diffstat (limited to 'libs/hwui/DeferredLayerUpdater.cpp')
-rw-r--r-- | libs/hwui/DeferredLayerUpdater.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp index ed05d0475437..03bbaf0bb0d1 100644 --- a/libs/hwui/DeferredLayerUpdater.cpp +++ b/libs/hwui/DeferredLayerUpdater.cpp @@ -32,24 +32,26 @@ DeferredLayerUpdater::DeferredLayerUpdater(Layer* layer, OpenGLRenderer* rendere , mRenderer(renderer) , mCaches(Caches::getInstance()) { mCaches.resourceCache.incrementRefcount(mLayer); + SkRefCnt_SafeAssign(mColorFilter, mLayer->getColorFilter()); mWidth = mLayer->layer.getWidth(); mHeight = mLayer->layer.getHeight(); mBlend = mLayer->isBlend(); - mColorFilter = mLayer->getColorFilter(); mAlpha = mLayer->getAlpha(); mMode = mLayer->getMode(); mDirtyRect.setEmpty(); } DeferredLayerUpdater::~DeferredLayerUpdater() { - setColorFilter(NULL); + SkSafeUnref(mColorFilter); if (mLayer) { mCaches.resourceCache.decrementRefcount(mLayer); } delete mRenderer; } -void DeferredLayerUpdater::setColorFilter(SkColorFilter* colorFilter) { +void DeferredLayerUpdater::setPaint(const SkPaint* paint) { + OpenGLRenderer::getAlphaAndModeDirect(paint, &mAlpha, &mMode); + SkColorFilter* colorFilter = (paint) ? paint->getColorFilter() : NULL; SkRefCnt_SafeAssign(mColorFilter, colorFilter); } @@ -136,9 +138,10 @@ void DeferredLayerUpdater::applyDeferred(DeferredLayerUpdater* deferredApply) { deferredApply->mSurfaceTexture = mSurfaceTexture; deferredApply->mNeedsGLContextAttach = mNeedsGLContextAttach; deferredApply->mUpdateTexImage = mUpdateTexImage; - deferredApply->setColorFilter(mColorFilter); deferredApply->setTransform(mTransform); + SkRefCnt_SafeAssign(deferredApply->mColorFilter, mColorFilter); + mDisplayList = 0; mDirtyRect.setEmpty(); mTransform = 0; |