commit 8fbd02373b03745518763823a1466adbf1066e92
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Tue Jun 13 12:49:39 2017 +0100

    Fix 'Different Bitmaps' APP. Now  27 out of 31 APPs work.

diff --git a/src/main/java/org/distorted/library/main/DistortedEffects.java b/src/main/java/org/distorted/library/main/DistortedEffects.java
index 68b6d85..6c7f434 100644
--- a/src/main/java/org/distorted/library/main/DistortedEffects.java
+++ b/src/main/java/org/distorted/library/main/DistortedEffects.java
@@ -270,12 +270,12 @@ public class DistortedEffects
 
   void drawPriv(float halfW, float halfH, MeshObject mesh, DistortedOutputSurface surface, long currTime, float marginInPixels)
     {
-    mM.compute(currTime);
-    mV.compute(currTime);
-    mF.compute(currTime);
-
     float halfZ = halfW*mesh.zFactor;
 
+    mM.compute(currTime);
+    mV.compute(currTime,halfW,halfH,halfZ);
+    mF.compute(currTime,halfW,halfH);
+
     GLES30.glViewport(0, 0, surface.mWidth, surface.mHeight );
 
     mMainProgram.useProgram();
@@ -300,8 +300,8 @@ public class DistortedEffects
       }
 
     mM.send(surface,halfW,halfH,halfZ,marginInPixels);
-    mV.send(halfW,halfH,halfZ);
-    mF.send(halfW,halfH);
+    mV.send();
+    mF.send();
 
     GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.numVertices);
 
diff --git a/src/main/java/org/distorted/library/main/EffectQueueFragment.java b/src/main/java/org/distorted/library/main/EffectQueueFragment.java
index dbcb7db..a1e9248 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueFragment.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueFragment.java
@@ -53,7 +53,7 @@ class EffectQueueFragment extends EffectQueue
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
   
-  synchronized void compute(long currTime) 
+  synchronized void compute(long currTime,float halfX, float halfY)
     { 
     if( currTime==mTime ) return;
     if( mTime==0 ) mTime = currTime;
@@ -69,8 +69,14 @@ class EffectQueueFragment extends EffectQueue
           EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
 
         if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
+          {
           remove(i--);
+          continue;
+          }
         }
+
+      mUniforms[NUM_UNIFORMS*i+4] = mUniforms[NUM_UNIFORMS*i+4]-halfX;
+      mUniforms[NUM_UNIFORMS*i+5] =-mUniforms[NUM_UNIFORMS*i+5]+halfY;
       }
 
     mTime = currTime;  
@@ -78,18 +84,12 @@ class EffectQueueFragment extends EffectQueue
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
   
-  synchronized void send(float halfX, float halfY)
+  synchronized void send()
     {
     GLES30.glUniform1i( mNumEffectsH, mNumEffects);
 
     if( mNumEffects>0 )
       {
-      for(int i=0; i<mNumEffects; i++)
-        {
-        mUniforms[NUM_UNIFORMS*i+4] = mUniforms[NUM_UNIFORMS*i+4]-halfX;
-        mUniforms[NUM_UNIFORMS*i+5] =-mUniforms[NUM_UNIFORMS*i+5]+halfY;
-        }
-
       GLES30.glUniform1iv( mNameH    ,                 mNumEffects, mName    ,0);
       GLES30.glUniform4fv( mUniformsH,(NUM_UNIFORMS/4)*mNumEffects, mUniforms,0);
       }  
diff --git a/src/main/java/org/distorted/library/main/EffectQueueVertex.java b/src/main/java/org/distorted/library/main/EffectQueueVertex.java
index 0798ddb..1018b37 100644
--- a/src/main/java/org/distorted/library/main/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/main/EffectQueueVertex.java
@@ -53,7 +53,7 @@ class EffectQueueVertex extends EffectQueue
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
   
-  synchronized void compute(long currTime) 
+  synchronized void compute(long currTime,float halfX, float halfY, float halfZ)
     {
     if( currTime==mTime ) return;
     if( mTime==0 ) mTime = currTime;
@@ -69,8 +69,15 @@ class EffectQueueVertex extends EffectQueue
           EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
 
         if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
+          {
           remove(i--);
+          continue;
+          }
         }
+
+      mUniforms[NUM_UNIFORMS*i+5] = mUniforms[NUM_UNIFORMS*i+5]-halfX;
+      mUniforms[NUM_UNIFORMS*i+6] =-mUniforms[NUM_UNIFORMS*i+6]+halfY;
+      mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-halfZ;
       }
 
     mTime = currTime;
@@ -78,19 +85,12 @@ class EffectQueueVertex extends EffectQueue
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  synchronized void send(float halfX, float halfY, float halfZ)
+  synchronized void send()
     {
     GLES30.glUniform1i( mNumEffectsH, mNumEffects);
       
     if( mNumEffects>0 )
       {
-      for(int i=0; i<mNumEffects; i++)
-        {
-        mUniforms[NUM_UNIFORMS*i+5] = mUniforms[NUM_UNIFORMS*i+5]-halfX;
-        mUniforms[NUM_UNIFORMS*i+6] =-mUniforms[NUM_UNIFORMS*i+6]+halfY;
-        mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-halfZ;
-        }
-
       GLES30.glUniform1iv( mNameH    ,                 mNumEffects, mName    ,0);
       GLES30.glUniform4fv( mUniformsH,(NUM_UNIFORMS/4)*mNumEffects, mUniforms,0);
       }
