summaryrefslogtreecommitdiffstats
path: root/libs/hwui/DisplayListRenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/DisplayListRenderer.cpp')
-rw-r--r--libs/hwui/DisplayListRenderer.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 0dd9c5a..23ccef6 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -169,7 +169,8 @@ void DisplayList::replay(OpenGLRenderer& renderer) {
int saveCount = renderer.getSaveCount() - 1;
while (!mReader.eof()) {
- switch (mReader.readInt()) {
+ int op = mReader.readInt();
+ switch (op) {
case AcquireContext: {
renderer.acquireContext();
}
@@ -195,6 +196,11 @@ void DisplayList::replay(OpenGLRenderer& renderer) {
getPaint(), getInt());
}
break;
+ case SaveLayerAlpha: {
+ renderer.saveLayerAlpha(getFloat(), getFloat(), getFloat(), getFloat(),
+ getInt(), getInt());
+ }
+ break;
case Translate: {
renderer.translate(getFloat(), getFloat());
}
@@ -400,6 +406,15 @@ int DisplayListRenderer::saveLayer(float left, float top, float right, float bot
return OpenGLRenderer::save(flags);
}
+int DisplayListRenderer::saveLayerAlpha(float left, float top, float right, float bottom,
+ int alpha, int flags) {
+ addOp(DisplayList::SaveLayerAlpha);
+ addBounds(left, top, right, bottom);
+ addInt(alpha);
+ addInt(flags);
+ return OpenGLRenderer::save(flags);
+}
+
void DisplayListRenderer::translate(float dx, float dy) {
addOp(DisplayList::Translate);
addPoint(dx, dy);