summaryrefslogtreecommitdiffstats
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2012-05-22 11:54:06 -0700
committerChris Craik <ccraik@google.com>2012-05-22 11:54:06 -0700
commitc8538ade8df2c2f013f8b93094912057ee1cc417 (patch)
treef938473c2ecd51d8cfdede8c2ae3404b37b60767 /libs/hwui/OpenGLRenderer.cpp
parent0eaeb69d1c4849da8ab1df70b84e90837193df67 (diff)
downloadframeworks_base-c8538ade8df2c2f013f8b93094912057ee1cc417.zip
frameworks_base-c8538ade8df2c2f013f8b93094912057ee1cc417.tar.gz
frameworks_base-c8538ade8df2c2f013f8b93094912057ee1cc417.tar.bz2
Don't clear the functor at every draw
instead clear functors at invoke time, and let them detach themselves as needed. bug:6511995 Change-Id: I9115fcadffb27eb850c1d1773c098d3d2e22788b
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 50f5d57..766a199 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -170,7 +170,6 @@ void OpenGLRenderer::prepare(bool opaque) {
void OpenGLRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) {
mCaches.clearGarbage();
- mFunctors.clear();
mSnapshot = new Snapshot(mFirstSnapshot,
SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag);
@@ -303,6 +302,8 @@ status_t OpenGLRenderer::invokeFunctors(Rect& dirty) {
status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) {
interrupt();
+ detachFunctor(functor);
+
if (mDirtyClip) {
setScissorFromClip();
}