commit 0c303a2c7b886c93afddaf005769fbc1687ad094
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Tue Apr 18 17:05:44 2017 +0100

    Release all TREE FBOs in Distorted.onPause().

diff --git a/src/main/java/org/distorted/library/Distorted.java b/src/main/java/org/distorted/library/Distorted.java
index 56691d1..270cc8c 100644
--- a/src/main/java/org/distorted/library/Distorted.java
+++ b/src/main/java/org/distorted/library/Distorted.java
@@ -131,6 +131,7 @@ public class Distorted
   public static void onPause()
     {
     DistortedSurface.onPause();
+    DistortedNode.onPause();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/DistortedNode.java b/src/main/java/org/distorted/library/DistortedNode.java
index da837c0..ce0c626 100644
--- a/src/main/java/org/distorted/library/DistortedNode.java
+++ b/src/main/java/org/distorted/library/DistortedNode.java
@@ -89,6 +89,24 @@ public class DistortedNode implements DistortedSlave
       }
     }
  
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  static synchronized void onPause()
+    {
+    NodeData data;
+
+    for (HashMap.Entry<ArrayList<Long>,NodeData> entry : mMapNodeID.entrySet())
+      {
+      data = entry.getValue();
+
+      if( data.mFBO != null )
+        {
+        data.mFBO.markForDeletion();
+        data.mFBO = null;
+        }
+      }
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   static synchronized void onDestroy()
@@ -248,6 +266,11 @@ public class DistortedNode implements DistortedSlave
         numRenders += mChildren.get(i).renderRecursive(currTime);
         }
 
+      if( mData.mFBO==null )
+        {
+        mData.mFBO = new DistortedFramebuffer(true, DistortedSurface.TYPE_TREE, mSurface.getWidth(),mSurface.getHeight());
+        }
+
       mData.mFBO.setAsOutput(currTime);
 
       if( mSurface.setAsInput() )
diff --git a/src/main/java/org/distorted/library/DistortedOutputSurface.java b/src/main/java/org/distorted/library/DistortedOutputSurface.java
index 88d2224..cb69fa5 100644
--- a/src/main/java/org/distorted/library/DistortedOutputSurface.java
+++ b/src/main/java/org/distorted/library/DistortedOutputSurface.java
@@ -173,8 +173,8 @@ abstract class DistortedOutputSurface extends DistortedSurface implements Distor
         {
         if( mBuffer1==null )
           {
-          mBuffer1 = new DistortedFramebuffer(mDepthCreated!=DONT_CREATE, DistortedSurface.TYPE_TREE, mWidth, mHeight);
-          mBuffer2 = new DistortedFramebuffer(false                     , DistortedSurface.TYPE_TREE, mWidth, mHeight);
+          mBuffer1 = new DistortedFramebuffer(mDepthCreated!=DONT_CREATE, DistortedSurface.TYPE_SYST, mWidth, mHeight);
+          mBuffer2 = new DistortedFramebuffer(false                     , DistortedSurface.TYPE_SYST, mWidth, mHeight);
           }
 
         numRenders += child.draw(time,mBuffer1);
diff --git a/src/main/java/org/distorted/library/DistortedSurface.java b/src/main/java/org/distorted/library/DistortedSurface.java
index 9e5759a..5185c1a 100644
--- a/src/main/java/org/distorted/library/DistortedSurface.java
+++ b/src/main/java/org/distorted/library/DistortedSurface.java
@@ -130,16 +130,7 @@ abstract class DistortedSurface
 
   static synchronized void onDestroy()
     {
-    Job job;
-    Iterator<Map.Entry<Long,Job>> it = mToDoMap.entrySet().iterator();
-
-    while (it.hasNext())
-      {
-      Map.Entry<Long,Job> entry = it.next();
-      job = entry.getValue();
-      if (job.surface.mType!=TYPE_SYST) it.remove();
-      }
-
+    mToDoMap.clear();
     mDoneList.clear();
 
     mToDo = true;
