summaryrefslogtreecommitdiff
path: root/libs/hwui/DeferredLayerUpdater.cpp
diff options
context:
space:
mode:
author Derek Sollenberger <djsollen@google.com> 2014-02-11 11:46:49 -0500
committer Derek Sollenberger <djsollen@google.com> 2014-02-12 11:26:06 -0500
commite889298cd6ae1fc0d76bc00d7d12586db03eb261 (patch)
treea2f5114d1ea5ff1265e28e2b01b4750d5d2741f3 /libs/hwui/DeferredLayerUpdater.cpp
parent826e51c4da2beac50c0ed1e1359787a0b69c878c (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.cpp11
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;