OpenGLRenderer would not render colors < ALPHA_THRESHOLD
Bug #3282805

This bug was introduced with a previous refactoring. This also fixes
issues with setting the alpha when drawing bitmaps.

Change-Id: Id47641d26a4536c7e540041f92243bf6db9fc96d
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index a8fe646..46fdc31 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -925,11 +925,17 @@
 }
 
 void OpenGLRenderer::setupDrawColorUniforms() {
-    if (mColorSet && mSetShaderColor) {
+    if (mColorSet || (mShader && mSetShaderColor)) {
         mCaches.currentProgram->setColor(mColorR, mColorG, mColorB, mColorA);
     }
 }
 
+void OpenGLRenderer::setupDrawColorAlphaUniforms() {
+    if (mSetShaderColor) {
+        mCaches.currentProgram->setColor(mColorA, mColorA, mColorA, mColorA);
+    }
+}
+
 void OpenGLRenderer::setupDrawShaderUniforms(bool ignoreTransform) {
     if (mShader) {
         if (ignoreTransform) {
@@ -1721,7 +1727,7 @@
     } else {
         setupDrawModelViewTranslate(left, top, right, bottom, ignoreTransform);
     }
-    setupDrawColorUniforms();
+    setupDrawColorAlphaUniforms();
     setupDrawColorFilterUniforms();
     setupDrawTexture(texture);
     setupDrawMesh(vertices, texCoords, vbo);
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index 82b27b0..5d8653d 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -443,6 +443,7 @@
     void setupDrawModelViewTranslate(float left, float top, float right, float bottom,
             bool ignoreTransform = false);
     void setupDrawColorUniforms();
+    void setupDrawColorAlphaUniforms();
     void setupDrawShaderUniforms(bool ignoreTransform = false);
     void setupDrawColorFilterUniforms();
     void setupDrawSimpleMesh();