commit c4f5a8dbf16e525a4070f76cb626202697b17885
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Thu Dec 15 13:39:10 2016 +0000

    onPause(): fix StarWars

diff --git a/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java b/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
index 590b973..431c0e0 100644
--- a/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
+++ b/src/main/java/org/distorted/examples/effectqueue/EffectQueueRenderer.java
@@ -73,7 +73,7 @@ class EffectQueueRenderer implements GLSurfaceView.Renderer, EffectListener
     mTexture = new DistortedTexture(texWidth,texHeight);
     mQueues  = new DistortedEffectQueues();
 
-    mQueues.addEventListener(this);
+    mQueues.registerForMessages(this);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
index 83870ca..5fbeb26 100644
--- a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
+++ b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
@@ -65,7 +65,7 @@ class ListenerRenderer implements GLSurfaceView.Renderer,EffectListener
       Distorted.setMaxVertex(NUM_BUBBLES);   
       mView = v;
       mQueues = new DistortedEffectQueues();
-      mQueues.addEventListener(this);
+      mQueues.registerForMessages(this);
       mRnd = new Random(0);
       }
 
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsActivity.java b/src/main/java/org/distorted/examples/starwars/StarWarsActivity.java
index 51b78af..d9a82c3 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsActivity.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsActivity.java
@@ -45,7 +45,8 @@ public class StarWarsActivity extends Activity
   @Override
   protected void onPause() 
     {
-    mView.onPause();  
+    mView.onPause();
+    mView.getRenderer().onPause();
     super.onPause();
     }
 
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
index 013e666..92efdf2 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
@@ -110,6 +110,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
   private Random mRnd = new Random(0);
   private DistortedObjectTree mRoot, mBackground;
   private GridFlat mQuad;
+  private int mWidth, mHeight;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -133,6 +134,14 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
     Distorted.setProjection(60.0f, 0.0f, 0.0f);
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void onPause()
+    {
+    mWidth = 0;
+    mHeight= 0;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
    
   public void onDrawFrame(GL10 glUnused) 
@@ -145,17 +154,23 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
     
   public void onSurfaceChanged(GL10 glUnused, int width, int height) 
     {
-    mScreenQueue.abortAllEffects();
-    mGFFAQueue.abortAllEffects();
-    mLogoQueue.abortAllEffects();
-    mCrawlQueue.abortAllEffects();
-    mCrawlBackgroundQueue.abortAllEffects();
+    if( mWidth!=width || mHeight!=height )  // after onPause() we get 2 calls here
+      {
+      mWidth = width;
+      mHeight= height;
 
-    for(int i=0; i<NUM_STARS; i++) mStarQueue[i].abortAllEffects();
+      mScreenQueue.abortAllEffects();
+      mGFFAQueue.abortAllEffects();
+      mLogoQueue.abortAllEffects();
+      mCrawlQueue.abortAllEffects();
+      mCrawlBackgroundQueue.abortAllEffects();
 
-    setupScreen(width,height);
+      for(int i=0; i<NUM_STARS; i++) mStarQueue[i].abortAllEffects();
 
-    Distorted.onSurfaceChanged(width, height);
+      setupScreen(width,height);
+
+      Distorted.onSurfaceChanged(width, height);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -228,7 +243,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
     mGFFAQueue.alpha(di);
       
     mRoot.attach(mGFFATexture, mGFFAQueue, mQuad);
-    mGFFAQueue.addEventListener(this);
+    mGFFAQueue.registerForMessages(this);
     }
     
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -377,7 +392,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
         mLogoQueue.move( new Static3D(-logoW/2,-logoH/2,0) );
       
         mRoot.attach(mLogoTexture,mLogoQueue,mQuad);
-        mLogoQueue.addEventListener(this);
+        mLogoQueue.registerForMessages(this);
         }
       else if( objectID==logoID )
         {
@@ -409,7 +424,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
         
         mBackground = mRoot.attach(mCrawlBackgroundTexture,mCrawlBackgroundQueue,mQuad);
         mBackground.attach(mCrawlTexture,mCrawlQueue,mQuad);
-        mCrawlQueue.addEventListener(this);
+        mCrawlQueue.registerForMessages(this);
         }
       else if( objectID==crawlID )
         {
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java b/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java
index 1d9f1a3..c4822fc 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsSurfaceView.java
@@ -21,17 +21,26 @@ package org.distorted.examples.starwars;
 
 import android.content.Context;
 import android.opengl.GLSurfaceView;
-import android.os.Build;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class StarWarsSurfaceView extends GLSurfaceView 
   {
+  private StarWarsRenderer mRenderer;
+
   public StarWarsSurfaceView(Context context) 
     {
     super(context);
     setEGLContextClientVersion(2);
-    setRenderer(new StarWarsRenderer(this));
+    mRenderer = new StarWarsRenderer(this);
+    setRenderer(mRenderer);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  StarWarsRenderer getRenderer()
+    {
+    return mRenderer;
     }
   }
 
