commit f4c5a46e883905386ef58d1a678f6c0faf3e8fc8
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun May 31 00:55:22 2020 +0100

    1. New icon for PreDeform app
    2. Library: advances with DeferredMeshJobs

diff --git a/src/main/java/org/distorted/library/mesh/DeferredJobs.java b/src/main/java/org/distorted/library/mesh/DeferredJobs.java
index 9dba706..bbfbdbe 100644
--- a/src/main/java/org/distorted/library/mesh/DeferredJobs.java
+++ b/src/main/java/org/distorted/library/mesh/DeferredJobs.java
@@ -79,7 +79,8 @@ public class DeferredJobs
                               break;
         case JOB_TYPE_MERGE : break;
         case JOB_TYPE_JOIN  : break;
-        case JOB_TYPE_COPY  : break;
+        case JOB_TYPE_COPY  : mTarget.deepCopyAttribs1(mSource[0]);
+                              break;
         }
       }
 
diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index 0725c4d..90d4e87 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -156,17 +156,19 @@ public abstract class MeshBase
 
      if( deep )
        {
+       mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_READ);
+       mVertAttribs1= new float[mNumVertices*VERT1_ATTRIBS];
+
        mJobNode = new DeferredJobs.JobNode[1];
 
        if( original.mJobNode[0]!=null )
          {
-         mJobNode[0] = new DeferredJobs.JobNode(original.mJobNode[0]);
+         mJobNode[0] = DeferredJobs.copy(this,original);
+         }
+       else
+         {
+         deepCopyAttribs1(original);
          }
-
-       mVBO1= new InternalBuffer(GLES30.GL_ARRAY_BUFFER, GLES30.GL_STATIC_READ);
-       mVertAttribs1= new float[mNumVertices*VERT1_ATTRIBS];
-       System.arraycopy(original.mVertAttribs1,0,mVertAttribs1,0,mNumVertices*VERT1_ATTRIBS);
-       mVBO1.invalidate();
        }
      else
        {
@@ -198,6 +200,14 @@ public abstract class MeshBase
      mComponentAssociationH[variant] = GLES30.glGetUniformLocation( mProgramH, "vComponAssoc");
      }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   void deepCopyAttribs1(MeshBase original)
+     {
+     System.arraycopy(original.mVertAttribs1,0,mVertAttribs1,0,mNumVertices*VERT1_ATTRIBS);
+     mVBO1.invalidate();
+     }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
    int numComponents()
