JAL-2759 performance tweaks
[jalview.git] / src / jalview / datamodel / HiddenColumnsCursor.java
index a002232..04d7189 100644 (file)
@@ -87,12 +87,11 @@ public class HiddenColumnsCursor
       {
         // deleted last region, index is now end of alignment
         index = hiddenCols.size();
-      }
 
-      // update the cursor position
-      HiddenCursorPosition newpos = new HiddenCursorPosition(index,
-              oldpos.getHiddenSoFar());
-      cursorPos.compareAndSet(oldpos, newpos);
+        HiddenCursorPosition newpos = new HiddenCursorPosition(index,
+                oldpos.getHiddenSoFar());
+        cursorPos.compareAndSet(oldpos, newpos);
+      }
     }
     hiddenColumns = hiddenCols;
   }
@@ -169,10 +168,16 @@ public class HiddenColumnsCursor
         }
       }
     }
-    HiddenCursorPosition newpos = new HiddenCursorPosition(index,
-            hiddenCount);
-    cursorPos.compareAndSet(oldpos, newpos);
-    return newpos;
+
+    if (index != oldpos.getRegionIndex()
+            || hiddenCount != oldpos.getHiddenSoFar())
+    {
+      HiddenCursorPosition newpos = new HiddenCursorPosition(index,
+              hiddenCount);
+      cursorPos.compareAndSet(oldpos, newpos);
+      return newpos;
+    }
+    return oldpos;
   }
 
   /**
@@ -224,9 +229,14 @@ public class HiddenColumnsCursor
 
     }
 
-    HiddenCursorPosition newpos = new HiddenCursorPosition(index,
-            hiddenCount);
-    cursorPos.compareAndSet(oldpos, newpos);
-    return newpos;
+    if (index != oldpos.getRegionIndex()
+            || hiddenCount != oldpos.getHiddenSoFar())
+    {
+      HiddenCursorPosition newpos = new HiddenCursorPosition(index,
+              hiddenCount);
+      cursorPos.compareAndSet(oldpos, newpos);
+      return newpos;
+    }
+    return oldpos;
   }
 }