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
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::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::callDrawGLFunction(Functor* functor, Rect& dirty) {
interrupt();
+ detachFunctor(functor);
+
if (mDirtyClip) {
setScissorFromClip();
}