summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-04-25 20:05:09 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-25 20:05:09 -0700
commitfc8e5eaa0368e724765f0fed61b8f25fdbde917a (patch)
tree67183dc51535121f7860ec61cc576131073c60fd
parent344c993e560ad1ae432ae8fc1ea41524c9011a95 (diff)
parentc189ef53220059acf2adedc92ac4ac7e6a993e6b (diff)
Merge "Ensure we start every frame in the proper GL state Bug #6345013, #6314960" into jb-dev
-rw-r--r--libs/hwui/OpenGLRenderer.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index f8bb70a6c0a9..55e962adde5c 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -278,6 +278,13 @@ status_t OpenGLRenderer::invokeFunctors(Rect& dirty) {
}
}
+ // Restore state possibly changed by the functors in process mode
+ GLboolean value;
+ glGetBooleanv(GL_BLEND, &value);
+ mCaches.blend = value;
+
+ mCaches.activeTexture(0);
+
return result;
}
@@ -2787,6 +2794,7 @@ void OpenGLRenderer::drawTextureMesh(float left, float top, float right, float b
void OpenGLRenderer::chooseBlending(bool blend, SkXfermode::Mode mode,
ProgramDescription& description, bool swapSrcDst) {
blend = blend || mode != SkXfermode::kSrcOver_Mode;
+
if (blend) {
// These blend modes are not supported by OpenGL directly and have
// to be implemented using shaders. Since the shader will perform