> > + int byte_index = keycode >> 3; > > + int bit_index = keycode - (byte_index << 3); > > + uint8_t mask = ~(1 << bit_index); > > + if ((m_unreleased_keys[byte_index] & mask) != > > m_unreleased_keys[byte_index] ) return true; ---------> [1] > > > > return false; > > }
> Is this an attempt for optimization or fixing anything? Any > assumption for with [1]? > eg. If there are 2 bits set within the same byte, [1] would always return > true. > --zou It works: For example, keys A (position 2 in byte) and C (position 4) are pressed. so: m_unreleased_keys[byte_index] = 10 if bit_index = 2, mask = ~(1 << 2) = 253 10 & 254 = 10 <-- false 10 & 253 = 8 <-- true. 10 & 252 = 10 10 & 201 = 2 <-- true (bit_index 8) 10 & 200 = 10 etc. But you're right that it's a mess. The complement rubbish can go and a simple if ((m_unreleased_keys[byte_index] & (1 << bit_index)) != 0 ) will do. --bwy __________________________________ Alles was der Gesundheit und Entspannung dient. BE A BETTER MEDIZINMANN! www.yahoo.de/clever _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit