From c49ad213b600f844e9070cb09390c3e6d3d13db4 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Thu, 01 Aug 2019 01:23:12 -0400
Subject: [PATCH] Avoid byte[] for versions.

---
 ObjEditor.java |   34 ++++++++++++++++++----------------
 1 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/ObjEditor.java b/ObjEditor.java
index 3b8dd95..963fa06 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -298,7 +298,7 @@
 
         if (copy.versions == null)
         {
-            copy.versions = new byte[100][];
+            copy.versions = new Object3D[100];
             copy.versionindex = -1;
         }
         
@@ -317,7 +317,7 @@
 
         if (copy.versions == null)
         {
-            copy.versions = new byte[100][];
+            copy.versions = new Object3D[100];
             copy.versionindex = -1;
         }
         
@@ -850,7 +850,7 @@
             frame.validate();
         }
 
-    private byte[] CompressCopy()
+    private Object3D CompressCopy()
     {
         boolean temp = CameraPane.SWITCH;
         CameraPane.SWITCH = false;
@@ -858,10 +858,11 @@
         copy.ExtractBigData(versiontable);
         // if (copy == client)
         
-        byte[] versions[] = copy.versions;
+        Object3D versions[] = copy.versions;
         copy.versions = null;
         
-        byte[] compress = Compress(copy);
+        //byte[] compress = Compress(copy);
+        Object3D compress = (Object3D)Grafreed.clone(copy);
         
         copy.versions = versions;
         
@@ -3565,6 +3566,7 @@
     
     static public byte[] Compress(Object3D o)
     {
+        // Slower to actually compress.
         try
         {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -3692,15 +3694,14 @@
         
         cRadio tab = GetCurrentTab();
         
-        byte[] compress = CompressCopy(); // Saved version. No need for "Replace".
+        Object3D compress = CompressCopy(); // Saved version. No need for "Replace".
         
         boolean thesame = false;
         
-        // Quick heuristic using length. Works only when stream is compressed.
-        if (copy.versionindex > 0 && copy.versions[copy.versionindex-1] != null && Equal(compress, copy.versions[copy.versionindex-1]))
-        {
-            thesame = true;
-        }
+//        if (copy.versionindex > 0 && copy.versions[copy.versionindex-1] != null && Equal(compress, copy.versions[copy.versionindex-1]))
+//        {
+//            thesame = true;
+//        }
         
         //EditorFrame.m_MainFrame.requestFocusInWindow();
         if (!thesame)
@@ -3860,7 +3861,7 @@
 
         copy.versionindex -= 1;
 
-        CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
+        CopyChanged((Object3D)copy.versions[copy.versionindex]);
         
         return true;
     }
@@ -3877,7 +3878,8 @@
             return false;
         }
 
-        CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
+        //CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
+        CopyChanged(copy.versions[copy.versionindex]);
         
         return true;
     }
@@ -3914,7 +3916,7 @@
 
         copy.versionindex += 1;
 
-        CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
+        CopyChanged(copy.versions[copy.versionindex]);
         
         //if (!tab.user[tab.versionindex])
         //    tab.graphs[tab.versionindex] = null;
@@ -4227,7 +4229,7 @@
             
             if (copy.versions[version] != null)
             {
-                CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex = version]));
+                CopyChanged(copy.versions[copy.versionindex = version]);
             }
             
             return;
@@ -4962,7 +4964,7 @@
             
         if (copy.versions == null)
         {
-            copy.versions = new byte[100][];
+            copy.versions = new Object3D[100];
             copy.versionindex = -1;
         }
         

--
Gitblit v1.6.2