From fb970d92bc737afe34e23a0667b1737c6b105fde Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sun, 2 Aug 2015 02:09:48 +0200 Subject: Fix Bitfield.put(..): Return previous value --- src/java/jogamp/common/util/Int32Bitfield.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/java/jogamp/common/util/Int32Bitfield.java') diff --git a/src/java/jogamp/common/util/Int32Bitfield.java b/src/java/jogamp/common/util/Int32Bitfield.java index 9bf2117..7b55a59 100644 --- a/src/java/jogamp/common/util/Int32Bitfield.java +++ b/src/java/jogamp/common/util/Int32Bitfield.java @@ -115,14 +115,18 @@ public class Int32Bitfield implements Bitfield { return 0 != ( storage & ( 1 << bitnum ) ) ; } @Override - public final void put(final int bitnum, final boolean bit) throws IndexOutOfBoundsException { + public final boolean put(final int bitnum, final boolean bit) throws IndexOutOfBoundsException { check(UNIT_SIZE, bitnum); final int m = 1 << bitnum; - if( bit ) { - storage |= m; - } else { - storage &= ~m; + final boolean prev = 0 != ( storage & m ) ; + if( prev != bit ) { + if( bit ) { + storage |= m; + } else { + storage &= ~m; + } } + return prev; } @Override public final void set(final int bitnum) throws IndexOutOfBoundsException { -- cgit v1.2.3