commit b96a20a4b3738df32d64e4696d99f357640dea9d
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Jul 4 22:48:29 2020 +0100

    Catch an error that sometimes happens in the field.

diff --git a/src/main/java/org/distorted/main/RubikSurfaceView.java b/src/main/java/org/distorted/main/RubikSurfaceView.java
index 5471882d..c7a44172 100644
--- a/src/main/java/org/distorted/main/RubikSurfaceView.java
+++ b/src/main/java/org/distorted/main/RubikSurfaceView.java
@@ -27,6 +27,8 @@ import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.view.MotionEvent;
 
+import com.google.firebase.crashlytics.FirebaseCrashlytics;
+
 import org.distorted.library.type.Static2D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -358,9 +360,24 @@ public class RubikSurfaceView extends GLSurfaceView
       if( mPtrID1!=INVALID_POINTER_ID && mPtrID2!=INVALID_POINTER_ID)
         {
         int pointer = event.findPointerIndex(mPtrID2);
+        float pX,pY;
 
-        float pX = event.getX(pointer);
-        float pY = event.getY(pointer);
+        try
+          {
+          pX = event.getX(pointer);
+          pY = event.getY(pointer);
+          }
+        catch(IllegalArgumentException ex)
+          {
+          mPtrID1=INVALID_POINTER_ID;
+          mPtrID2=INVALID_POINTER_ID;
+
+          FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
+          crashlytics.setCustomKey("DragError", "pointer="+pointer );
+          crashlytics.recordException(ex);
+
+          return;
+          }
 
         float x2 = (pX - mScreenWidth*0.5f)/mScreenMin;
         float y2 = (mScreenHeight*0.5f -pY)/mScreenMin;
