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
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp
index ed05d04..03bbaf0 100644
--- a/libs/hwui/DeferredLayerUpdater.cpp
+++ b/libs/hwui/DeferredLayerUpdater.cpp
@@ -32,24 +32,26 @@
         , 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 @@
     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;