Merge "Make sure the opaque bitmap is opaque. GL doesn't like being lied to. Bug #3382992" into honeycomb
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index ca19da2..b0553c6 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -784,6 +784,7 @@
                                     Bitmap.Config.ARGB_8888);
                             mResizeBitmap.setHasAlpha(false);
                             Canvas canvas = new Canvas(mResizeBitmap);
+                            canvas.drawColor(0xff000000, PorterDuff.Mode.SRC);
                             int yoff;
                             final boolean scrolling = mScroller != null
                                     && mScroller.computeScrollOffset();
@@ -1500,7 +1501,12 @@
                 mPreviousDirty.set(dirty);
                 dirty.setEmpty();
 
-                mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, mCurrentDirty);
+                Rect currentDirty = mCurrentDirty;
+                if (animating) {
+                    currentDirty = null;
+                }
+
+                mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, currentDirty);
             }
 
             if (animating) {
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 9f491b3..c378f46 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -218,6 +218,9 @@
 
 bool OpenGLRenderer::callDrawGLFunction(Functor *functor) {
     interrupt();
+    if (mDirtyClip) {
+        setScissorFromClip();
+    }
     status_t result = (*functor)();
     resume();
     return (result == 0) ? false : true;
@@ -1451,13 +1454,7 @@
         mode = getXfermode(p->getXfermode());
     }
 
-    // Skia draws using the color's alpha channel if < 255
-    // Otherwise, it uses the paint's alpha
     int color = p->getColor();
-    if (((color >> 24) & 0xff) == 255) {
-        color |= p->getAlpha() << 24;
-    }
-
     drawColorRect(left, top, right, bottom, color, mode);
 }