Deleting objects on the wrong thread is a silly idea
Bug #7195815

Turns out that multi-threading is hard.

Change-Id: Ib0b4bd6dc3caea27f7ced22cbb363bb955fe58ab
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp
index fb525ee..cd2e571 100644
--- a/libs/hwui/Layer.cpp
+++ b/libs/hwui/Layer.cpp
@@ -19,6 +19,7 @@
 #include <utils/Log.h>
 
 #include "Layer.h"
+#include "LayerRenderer.h"
 #include "OpenGLRenderer.h"
 #include "Caches.h"
 
@@ -46,15 +47,12 @@
     if (mesh) delete mesh;
     if (meshIndices) delete meshIndices;
     if (colorFilter) Caches::getInstance().resourceCache.decrementRefcount(colorFilter);
-    if (fbo) Caches::getInstance().fboCache.put(fbo);
-    deleteTexture();
-}
-
-void Layer::freeResourcesLocked() {
-    if (colorFilter) {
-        Caches::getInstance().resourceCache.decrementRefcountLocked(colorFilter);
-        colorFilter = NULL;
+    if (fbo) {
+        LayerRenderer::flushLayer(this);
+        Caches::getInstance().fboCache.put(fbo);
+        fbo = 0;
     }
+    deleteTexture();
 }
 
 void Layer::setPaint(SkPaint* paint) {
@@ -71,7 +69,5 @@
     }
 }
 
-
-
 }; // namespace uirenderer
 }; // namespace android