commit 8badfe2a0779a69442c37bf8dde3ac1147d07f77
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat May 8 16:39:35 2021 +0200

    Progress with RubikControl.

diff --git a/src/main/java/org/distorted/control/RubikControlRotate.java b/src/main/java/org/distorted/control/RubikControlRotate.java
index 389ae399..d0e235e8 100644
--- a/src/main/java/org/distorted/control/RubikControlRotate.java
+++ b/src/main/java/org/distorted/control/RubikControlRotate.java
@@ -41,6 +41,7 @@ class RubikControlRotate
 
   private Dynamic3D mDynamic;
   private MatrixEffectScale mScale;
+  private MeshQuad mQuad;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -79,12 +80,12 @@ class RubikControlRotate
     if( mNodes==null )
       {
       mNodes = new DistortedNode[NUM_NODE];
-      MeshQuad mesh = new MeshQuad();
-      DistortedTexture texture = new DistortedTexture();
-      texture.setColorARGB(0xff00ff00);
-
-      mNodes[0]= new DistortedNode(texture,mEffects[0],mesh);
+      mQuad = new MeshQuad();
       }
+
+    DistortedTexture texture = new DistortedTexture();
+    texture.setColorARGB(0xff00ff00);
+    mNodes[0] = new DistortedNode(texture, mEffects[0], mQuad);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/control/RubikControlWhole.java b/src/main/java/org/distorted/control/RubikControlWhole.java
index 1ab50251..52874d68 100644
--- a/src/main/java/org/distorted/control/RubikControlWhole.java
+++ b/src/main/java/org/distorted/control/RubikControlWhole.java
@@ -49,6 +49,7 @@ class RubikControlWhole
   private DistortedEffects[] mEffects;
   private DistortedNode[] mNodes;
   private long mEffectID;
+  private MeshQuad mQuad;
 
   private Dynamic3D mDynamicHand1;
   private MatrixEffectMove mMoveHand1;
@@ -57,11 +58,11 @@ class RubikControlWhole
 
    private Bitmap openBitmap(RubikActivity act, int resource)
      {
-     try(InputStream is = act.getResources().openRawResource(resource) )
+     try( InputStream is = act.getResources().openRawResource(resource) )
        {
        return BitmapFactory.decodeStream(is);
        }
-     catch(IOException e)
+     catch( IOException e )
        {
        // ignore
        }
@@ -131,28 +132,28 @@ class RubikControlWhole
     if( mNodes==null )
       {
       mNodes = new DistortedNode[NUM_NODE];
-      RubikActivity act = mControl.getActivity();
-
-      if( act!=null )
-        {
-        MeshQuad mesh = new MeshQuad();
-
-        Bitmap bmpCirc = openBitmap(act, R.drawable.ui_fading_circle);
-        DistortedTexture textureCirc = new DistortedTexture();
-        textureCirc.setTexture(bmpCirc);
-        mNodes[0]= new DistortedNode(textureCirc,mEffects[0],mesh);
-        mNodes[1]= new DistortedNode(textureCirc,mEffects[1],mesh);
-
-        Bitmap bmpHand = openBitmap(act, R.drawable.ui_hand_pointer);
-        DistortedTexture textureHand = new DistortedTexture();
-        textureHand.setTexture(bmpHand);
-        mNodes[2]= new DistortedNode(textureHand,mEffects[2],mesh);
-        mNodes[3]= new DistortedNode(textureHand,mEffects[3],mesh);
-        }
-      else
-        {
-        android.util.Log.e("D", "Activity NULL!!");
-        }
+      mQuad  = new MeshQuad();
+      }
+
+    RubikActivity act = mControl.getActivity();
+
+    if( act!=null )
+      {
+      Bitmap bmpCirc = openBitmap(act, R.drawable.ui_fading_circle);
+      DistortedTexture textureCirc = new DistortedTexture();
+      textureCirc.setTexture(bmpCirc);
+      mNodes[0]= new DistortedNode(textureCirc,mEffects[0],mQuad);
+      mNodes[1]= new DistortedNode(textureCirc,mEffects[1],mQuad);
+
+      Bitmap bmpHand = openBitmap(act, R.drawable.ui_hand_pointer);
+      DistortedTexture textureHand = new DistortedTexture();
+      textureHand.setTexture(bmpHand);
+      mNodes[2]= new DistortedNode(textureHand,mEffects[2],mQuad);
+      mNodes[3]= new DistortedNode(textureHand,mEffects[3],mQuad);
+      }
+    else
+      {
+      android.util.Log.e("D", "Activity NULL!!");
       }
     }
 
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index fd301126..52728561 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -244,6 +244,7 @@ public class RubikActivity extends AppCompatActivity
       view.initialize();
       restorePreferences();
       ScreenList.setScreen(this);
+      unblockEverything();
 
       if( mJustStarted )
         {
@@ -574,6 +575,9 @@ public class RubikActivity extends AppCompatActivity
 
       RubikPreRender pre = getPreRender();
       pre.blockEverything();
+
+      RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
+      play.setLockState(this);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -584,6 +588,9 @@ public class RubikActivity extends AppCompatActivity
 
       RubikPreRender pre = getPreRender();
       pre.unblockEverything();
+
+      RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
+      play.setLockState(this);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/screens/RubikScreenBase.java b/src/main/java/org/distorted/screens/RubikScreenBase.java
index c69056ab..d8d6bf3c 100644
--- a/src/main/java/org/distorted/screens/RubikScreenBase.java
+++ b/src/main/java/org/distorted/screens/RubikScreenBase.java
@@ -174,6 +174,13 @@ abstract class RubikScreenBase extends RubikScreenAbstract implements RubikPreRe
       });
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void setLockState(RubikActivity act)
+    {
+    mLockButton.setImageResource(getLockIcon(act));
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void addMove(int axis, int row, int angle)
