summaryrefslogtreecommitdiff
path: root/libs/hwui/LayerRenderer.cpp
diff options
context:
space:
mode:
author Chet Haase <chet@google.com> 2012-06-06 19:03:58 -0700
committer Chet Haase <chet@google.com> 2012-06-07 06:25:04 -0700
commit44b2fe3fc114ee5f7273c6b0fee2cc999bf244a2 (patch)
tree8d54bda8c5b7021be5d923beb641a9efb22dcf30 /libs/hwui/LayerRenderer.cpp
parent43fa4c5261a732decae3bbfaea2a00f8bb9b709c (diff)
Track canvas clearing for swap buffers logic.
A previous fix made it necessary for a frame to render something to GL in order to cause a call to eglSwapBuffers(). Besides the calls being tracked as part of issuing a DisplayList, there is also a potential call to clear the canvas (via glClear()) on non-opaque surfaces. This call is also good to track, since a surface that gets cleared without any other drawing operations is worth flipping to the screen (to erase old contents on that surface). This fix tracks the status of the pre-draw operations to find out whether glClear() was called and then sets the drawing status appropriately. Issue #6606422 QuickContact dismissal is janky again (Tracking) Change-Id: I5fcaccfdc9293dd46b83f2fc279730a5d2740ebf
Diffstat (limited to 'libs/hwui/LayerRenderer.cpp')
-rw-r--r--libs/hwui/LayerRenderer.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp
index 2a4e72be0e31..65f8c7c8b67c 100644
--- a/libs/hwui/LayerRenderer.cpp
+++ b/libs/hwui/LayerRenderer.cpp
@@ -37,7 +37,7 @@ LayerRenderer::LayerRenderer(Layer* layer): mLayer(layer) {
LayerRenderer::~LayerRenderer() {
}
-void LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) {
+int LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) {
LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->getFbo());
glBindFramebuffer(GL_FRAMEBUFFER, mLayer->getFbo());
@@ -57,9 +57,9 @@ void LayerRenderer::prepareDirty(float left, float top, float right, float botto
mLayer->region.subtractSelf(r);
}
- OpenGLRenderer::prepareDirty(dirty.left, dirty.top, dirty.right, dirty.bottom, opaque);
+ return OpenGLRenderer::prepareDirty(dirty.left, dirty.top, dirty.right, dirty.bottom, opaque);
#else
- OpenGLRenderer::prepareDirty(0.0f, 0.0f, width, height, opaque);
+ return OpenGLRenderer::prepareDirty(0.0f, 0.0f, width, height, opaque);
#endif
}