Add kModeSync

 Bug: 16526750

Change-Id: I4c087160e80432739321172fd57880846c8de6e0
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 3eb779f..32304dc 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -78,7 +78,7 @@
     delete mStagingDisplayListData;
     mStagingDisplayListData = data;
     if (mStagingDisplayListData) {
-        Caches::getInstance().registerFunctors(mStagingDisplayListData->functorCount);
+        Caches::getInstance().registerFunctors(mStagingDisplayListData->functors.size());
     }
 }
 
@@ -254,6 +254,11 @@
         deleteDisplayListData();
         mDisplayListData = mStagingDisplayListData;
         mStagingDisplayListData = NULL;
+        if (mDisplayListData) {
+            for (size_t i = 0; i < mDisplayListData->functors.size(); i++) {
+                (*mDisplayListData->functors[i])(DrawGlInfo::kModeSync, NULL);
+            }
+        }
         damageSelf(info);
     }
 }
@@ -271,7 +276,7 @@
 void RenderNode::prepareSubTree(TreeInfo& info, DisplayListData* subtree) {
     if (subtree) {
         TextureCache& cache = Caches::getInstance().textureCache;
-        info.out.hasFunctors |= subtree->functorCount;
+        info.out.hasFunctors |= subtree->functors.size();
         // TODO: Fix ownedBitmapResources to not require disabling prepareTextures
         // and thus falling out of async drawing path.
         if (subtree->ownedBitmapResources.size()) {