X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FHiddenColumns.java;h=458bde7945178db132bb28fd4f5825b6eb0fd117;hb=4435c731351c802772dd1355fdb5747cfacd7838;hp=2d43f025f7bc6746b216f37d9aee2feb13330bb1;hpb=a435a8668f8df568d3bdcf4e286210b69c18920c;p=jalview.git diff --git a/src/jalview/datamodel/HiddenColumns.java b/src/jalview/datamodel/HiddenColumns.java index 2d43f02..458bde7 100644 --- a/src/jalview/datamodel/HiddenColumns.java +++ b/src/jalview/datamodel/HiddenColumns.java @@ -86,6 +86,20 @@ public class HiddenColumns */ private List hiddenColumns = new ArrayList<>(); + private BitSet hiddenBitSet; + + public BitSet getBitset() + { + if (hiddenBitSet == null) + { + hiddenBitSet = new BitSet(); + for (int[] range : hiddenColumns) + { + hiddenBitSet.set(range[0], range[1] + 1); + } + } + return hiddenBitSet; + } /** * Constructor */ @@ -213,6 +227,7 @@ public class HiddenColumns prevHiddenCount); } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } } @@ -264,6 +279,7 @@ public class HiddenColumns insertRangeAtOverlap(i, start, end, region); added = true; } + hiddenBitSet = null; return added; } @@ -310,6 +326,7 @@ public class HiddenColumns } numColumns += region[1] - oldend; hiddenColumns.subList(i + 1, endi + 1).clear(); + hiddenBitSet = null; } /** @@ -330,6 +347,7 @@ public class HiddenColumns } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } } @@ -356,6 +374,7 @@ public class HiddenColumns } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } } @@ -399,6 +418,7 @@ public class HiddenColumns } } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } } @@ -620,6 +640,7 @@ public class HiddenColumns } finally { + hiddenBitSet = null; LOCK.readLock().unlock(); } } @@ -798,7 +819,7 @@ public class HiddenColumns for (int firstSet = tohide .nextSetBit(start), lastSet = start; firstSet >= start && lastSet <= end; firstSet = tohide - .nextSetBit(lastSet)) + .nextSetBit(lastSet)) { lastSet = tohide.nextClearBit(firstSet); if (lastSet <= end) @@ -813,6 +834,7 @@ public class HiddenColumns cursor = new HiddenColumnsCursor(hiddenColumns); } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } } @@ -894,6 +916,7 @@ public class HiddenColumns } } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } } @@ -909,16 +932,12 @@ public class HiddenColumns { LOCK.writeLock().lock(); - BitSet hiddenBitSet = new BitSet(); - for (int[] range : hiddenColumns) - { - hiddenBitSet.set(range[0], range[1] + 1); - } - hiddenBitSet.andNot(updates); + getBitset().andNot(updates); hiddenColumns.clear(); hideColumns(hiddenBitSet); } finally { + hiddenBitSet = null; LOCK.writeLock().unlock(); } }