summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger/Layer.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-04-21 15:24:11 -0700
committerMathias Agopian <mathias@google.com>2010-04-21 22:25:35 -0700
commit245e4d78c5fb304fe153c36303ec69bf8a907f65 (patch)
tree9663613ba57dbd7a2b9721f08c86419d3a349c1e /libs/surfaceflinger/Layer.cpp
parentef69d8b0c9ef205b0ca867ecf66e0e9a20cd187a (diff)
downloadframeworks_native-245e4d78c5fb304fe153c36303ec69bf8a907f65.zip
frameworks_native-245e4d78c5fb304fe153c36303ec69bf8a907f65.tar.gz
frameworks_native-245e4d78c5fb304fe153c36303ec69bf8a907f65.tar.bz2
better fix for [2420565] Surface.lockCanvas() updates the dirty region too often
Change-Id: I83438b40effd21538f1c74396dc665254b9d5ab6
Diffstat (limited to 'libs/surfaceflinger/Layer.cpp')
-rw-r--r--libs/surfaceflinger/Layer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp
index 0a3254d..1a66970 100644
--- a/libs/surfaceflinger/Layer.cpp
+++ b/libs/surfaceflinger/Layer.cpp
@@ -540,9 +540,15 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions)
mFlinger->signalEvent();
}
- if (!mPostedDirtyRegion.isEmpty()) {
- reloadTexture( mPostedDirtyRegion );
- }
+ /* a buffer was posted, so we need to call reloadTexture(), which
+ * will update our internal data structures (eg: EGLImageKHR or
+ * texture names). we need to do this even if mPostedDirtyRegion is
+ * empty -- it's orthogonal to the fact that a new buffer was posted,
+ * for instance, a degenerate case could be that the user did an empty
+ * update but repainted the buffer with appropriate content (after a
+ * resize for instance).
+ */
+ reloadTexture( mPostedDirtyRegion );
}
void Layer::unlockPageFlip(