diff options
author | Chris Craik <ccraik@google.com> | 2012-05-22 11:54:06 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2012-05-22 11:54:06 -0700 |
commit | c8538ade8df2c2f013f8b93094912057ee1cc417 (patch) | |
tree | f938473c2ecd51d8cfdede8c2ae3404b37b60767 /libs/hwui/OpenGLRenderer.cpp | |
parent | 0eaeb69d1c4849da8ab1df70b84e90837193df67 (diff) | |
download | frameworks_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.cpp | 3 |
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(); } |