commit 52e8e76a48da57c1ec01eb310681c8530551c0de
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Jul 20 13:26:09 2020 +0100

    Before somehow the Dynamics sometimes tolerated not being reset to beginning before next use. New version doesn't - correct that in two apps.

diff --git a/src/main/java/org/distorted/examples/deform/DeformActivity.java b/src/main/java/org/distorted/examples/deform/DeformActivity.java
index f86fab5..68c7b11 100644
--- a/src/main/java/org/distorted/examples/deform/DeformActivity.java
+++ b/src/main/java/org/distorted/examples/deform/DeformActivity.java
@@ -147,12 +147,11 @@ public class DeformActivity extends Activity implements OnSeekBarChangeListener
     
     public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
       {
-      switch (bar.getId()) 
+      if (bar.getId() == R.id.deformSeekRadius)
         {
-        case R.id.deformSeekRadius: DeformSurfaceView view = findViewById(R.id.deformSurfaceView);
-                                    view.getRenderer().setRegionRadius(progress);
-                                    textR.setText(getString(R.string.radius_placeholder,(progress<100 ? (""+progress): "Infinity") ));
-                                    break;
+        DeformSurfaceView view = findViewById(R.id.deformSurfaceView);
+        view.getRenderer().setRegionRadius(progress);
+        textR.setText(getString(R.string.radius_placeholder,(progress<100 ? (""+progress): "Infinity") ));
         }
       }
 
diff --git a/src/main/java/org/distorted/examples/deform/DeformRenderer.java b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
index 5554d13..b7716ff 100644
--- a/src/main/java/org/distorted/examples/deform/DeformRenderer.java
+++ b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
@@ -76,6 +76,8 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
    private VertexEffectDistort mMovingDistort, mReleasedDistort;
    private VertexEffectDeform mMovingDeform, mReleasedDeform;
 
+   private Dynamic3D mReleasedDistortDynamic, mReleasedDeformDynamic, mReleasedShearDynamic;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
    DeformRenderer(GLSurfaceView view)
@@ -91,8 +93,8 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
       mEffects.apply( new MatrixEffectScale(mScale) );
 
       // DISTORT
-      Dynamic3D releasedDistortDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
-      releasedDistortDynamic.setMode(Dynamic3D.MODE_PATH);
+      mReleasedDistortDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
+      mReleasedDistortDynamic.setMode(Dynamic3D.MODE_PATH);
       Dynamic3D movingDistortDynamic = new Dynamic3D(0,0.5f);
       movingDistortDynamic.setMode(Dynamic3D.MODE_PATH);
 
@@ -101,14 +103,14 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
       for(int i=0; i<NUM_VECTORS; i++)
         {
         vDistort[i] = new Static3D(0,0,0);
-        releasedDistortDynamic.add(vDistort[i]);
+        mReleasedDistortDynamic.add(vDistort[i]);
         }
 
       movingDistortDynamic.add(vDistort[0]);
 
       // Deform
-      Dynamic3D releasedDeformDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
-      releasedDeformDynamic.setMode(Dynamic3D.MODE_PATH);
+      mReleasedDeformDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
+      mReleasedDeformDynamic.setMode(Dynamic3D.MODE_PATH);
       Dynamic3D movingDeformDynamic = new Dynamic3D(0,0.5f);
       movingDeformDynamic.setMode(Dynamic3D.MODE_PATH);
 
@@ -117,14 +119,14 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
       for(int i=0; i<NUM_VECTORS; i++)
         {
         vDeform[i] = new Static3D(0,0,0);
-        releasedDeformDynamic.add(vDeform[i]);
+        mReleasedDeformDynamic.add(vDeform[i]);
         }
 
       movingDeformDynamic.add(vDeform[0]);
 
       // Shear
-      Dynamic3D releasedShearDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
-      releasedShearDynamic.setMode(Dynamic3D.MODE_PATH);
+      mReleasedShearDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
+      mReleasedShearDynamic.setMode(Dynamic3D.MODE_PATH);
       Dynamic3D movingShearDynamic = new Dynamic3D(0,0.5f);
       movingShearDynamic.setMode(Dynamic3D.MODE_PATH);
 
@@ -133,7 +135,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
       for(int i=0; i<NUM_VECTORS; i++)
         {
         vShear[i] = new Static3D(0,0,0);
-        releasedShearDynamic.add(vShear[i]);
+        mReleasedShearDynamic.add(vShear[i]);
         }
 
       movingShearDynamic.add(vShear[0]);
@@ -143,12 +145,12 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
 
       Static1D deformRadius = new Static1D(0.5f);
 
-      mMovingDistort   = new VertexEffectDistort( movingDistortDynamic  ,               mTouchPoint, mRegion);
-      mMovingDeform    = new VertexEffectDeform ( movingDeformDynamic   , deformRadius, mTouchPoint, mRegion);
-      mMovingShear     = new MatrixEffectShear  ( movingShearDynamic    ,               mTouchPoint         );
-      mReleasedDistort = new VertexEffectDistort( releasedDistortDynamic,               mTouchPoint, mRegion);
-      mReleasedDeform  = new VertexEffectDeform ( releasedDeformDynamic , deformRadius, mTouchPoint, mRegion);
-      mReleasedShear   = new MatrixEffectShear  ( releasedShearDynamic  ,               mTouchPoint         );
+      mMovingDistort   = new VertexEffectDistort( movingDistortDynamic   ,               mTouchPoint, mRegion);
+      mMovingDeform    = new VertexEffectDeform ( movingDeformDynamic    , deformRadius, mTouchPoint, mRegion);
+      mMovingShear     = new MatrixEffectShear  ( movingShearDynamic     ,               mTouchPoint         );
+      mReleasedDistort = new VertexEffectDistort( mReleasedDistortDynamic,               mTouchPoint, mRegion);
+      mReleasedDeform  = new VertexEffectDeform ( mReleasedDeformDynamic , deformRadius, mTouchPoint, mRegion);
+      mReleasedShear   = new MatrixEffectShear  ( mReleasedShearDynamic  ,               mTouchPoint         );
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -301,6 +303,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
                        }
                      vDistort[NUM_VECTORS-1].set(0,0,0);
                      mEffects.apply(mReleasedDistort);
+                     mReleasedDistortDynamic.resetToBeginning();
                      mReleasedDistort.notifyWhenFinished(this);
                      break;
        case DEFORM : for(int i=1; i<NUM_VECTORS-1; i++)
@@ -309,6 +312,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
                        }
                      vDeform[NUM_VECTORS-1].set(0,0,0);
                      mEffects.apply(mReleasedDeform);
+                     mReleasedDeformDynamic.resetToBeginning();
                      mReleasedDeform.notifyWhenFinished(this);
                      break;
        case SHEAR  : for(int i=1; i<NUM_VECTORS-1; i++)
@@ -317,6 +321,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener, Distorte
                        }
                      vShear[NUM_VECTORS-1].set(0,0,0);
                      mEffects.apply(mReleasedShear);
+                     mReleasedShearDynamic.resetToBeginning();
                      mReleasedShear.notifyWhenFinished(this);
                      break;
        }
diff --git a/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java b/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java
index c38aae8..33a63ab 100644
--- a/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java
+++ b/src/main/java/org/distorted/examples/movingglow/MovingGlowRenderer.java
@@ -66,6 +66,8 @@ class MovingGlowRenderer implements GLSurfaceView.Renderer, EffectListener, Dist
    private PostprocessEffectGlow[] mGlow = new PostprocessEffectGlow[NUM_LEAVES];
    private int mGlowing;
    private Static3D mScale;
+   private Dynamic2D mHaloAndRadiusDyn;
+   private Dynamic4D[] mColorDyn;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -108,19 +110,21 @@ class MovingGlowRenderer implements GLSurfaceView.Renderer, EffectListener, Dist
         root.attach(node);
         }
 
-      Dynamic2D haloAndRadiusDyn = new Dynamic2D(FLASH_TIME,1.0f);
-      haloAndRadiusDyn.add(new Static2D( 0, 0));
-      haloAndRadiusDyn.add(new Static2D(70,50));
+      mHaloAndRadiusDyn = new Dynamic2D(FLASH_TIME,1.0f);
+      mHaloAndRadiusDyn.add(new Static2D( 0, 0));
+      mHaloAndRadiusDyn.add(new Static2D(70,50));
+
+      mColorDyn = new Dynamic4D[NUM_LEAVES];
 
       for(int leaf=0; leaf<NUM_LEAVES; leaf++)
         {
-        Dynamic4D color= new Dynamic4D(FLASH_TIME,1.0f);
-        Static4D P1    = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 0.0f);
-        Static4D P2    = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 1.0f);
-        color.add(P1);
-        color.add(P2);
+        mColorDyn[leaf] = new Dynamic4D(FLASH_TIME,1.0f);
+        Static4D P1     = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 0.0f);
+        Static4D P2     = new Static4D(colors[3*leaf],colors[3*leaf+1], colors[3*leaf+2], 1.0f);
+        mColorDyn[leaf].add(P1);
+        mColorDyn[leaf].add(P2);
 
-        mGlow[leaf] = new PostprocessEffectGlow(haloAndRadiusDyn,color);
+        mGlow[leaf] = new PostprocessEffectGlow(mHaloAndRadiusDyn,mColorDyn[leaf]);
         }
 
       makeGlow(0);
@@ -135,6 +139,8 @@ class MovingGlowRenderer implements GLSurfaceView.Renderer, EffectListener, Dist
      {
      mGlowing = leaf;
      mLeafEffects[leaf].apply(mGlow[leaf]);
+     mHaloAndRadiusDyn.resetToBeginning();
+     mColorDyn[leaf].resetToBeginning();
      mGlow[leaf].notifyWhenFinished(this);
      }
 
