commit 0c768d697016e0dfdbbea849e2cf9dbc689132c9
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Jan 30 15:40:31 2023 +0100

    calls to FastScramble and SlowScramble might fail (preRender is blocked). Return false then and if so, do not do anything in the app.

diff --git a/src/main/java/org/distorted/external/RubikNetwork.java b/src/main/java/org/distorted/external/RubikNetwork.java
index 30280eb9..690ed431 100644
--- a/src/main/java/org/distorted/external/RubikNetwork.java
+++ b/src/main/java/org/distorted/external/RubikNetwork.java
@@ -505,7 +505,7 @@ public class RubikNetwork
     String reclist = scores.getRecordList("&o=","&l=","&t=");
     String country = scores.getCountry();
     long epoch = System.currentTimeMillis();
-    String salt = "cuboid";
+    String salt = "cubold";
 
     String renderer = DistortedLibrary.getDriverRenderer();
     String version  = DistortedLibrary.getDriverVersion();
@@ -517,7 +517,7 @@ public class RubikNetwork
     String url1=SERVER+"submit.cgi";
     String url2 = "n="+name+"&v="+veri+"&r="+numRuns+"&p="+numPlay+"&i="+deviceID+"&e="+mVersion;
     url2 += "&d="+renderer+"&s="+version+reclist+"&c="+country+"&f="+epoch;
-    String hash = computeHash( url2, salt.getBytes() );
+    String hash = computeHash( url2+"d", salt.getBytes() );
 
     return url1 + "?" + url2 + "&h=" + hash;
     }
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index 683b416c..663ec973 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -333,9 +333,9 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
       @Override
       public void onClick(View v)
         {
-        mShouldReactToEndOfScrambling = false;
         int duration = BaseEffect.Type.FAST_SCRAMBLE.getDuration();
-        act.getControl().fastScrambleObject(duration,RubikObject.FAST_SCRAMBLES);
+        boolean success = act.getControl().fastScrambleObject(duration,RubikObject.FAST_SCRAMBLES);
+        if( success ) mShouldReactToEndOfScrambling = false;
         }
       });
     }
@@ -506,9 +506,13 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
             int currObject = RubikObjectList.getCurrObject();
             RubikObject object = RubikObjectList.getObject(currObject);
             final int scrambles = ii<LEVELS_SHOWN ? ii+1 : (object==null ? 0 : object.getNumScramble());
-            mLevelValue = ii+1;
-            mShouldReactToEndOfScrambling = true;
-            control.scrambleObject(scrambles);
+
+            boolean success = control.scrambleObject(scrambles);
+            if( success )
+              {
+              mLevelValue = ii+1;
+              mShouldReactToEndOfScrambling = true;
+              }
             }
           }
         });
