public void update() {
		if (done) {
			return;
		}
		
		int processed = AL10.alGetSourcei(source, AL10.AL_BUFFERS_PROCESSED);
		
		while (processed > 0) {
			unqueued.clear();
			
			AL10.alSourceUnqueueBuffers(source, unqueued);
	        if (stream(unqueued.get(0))) {
	        	AL10.alSourceQueueBuffers(source, unqueued);
	        } else {
	        	remainingBufferCount--;
	        	if (remainingBufferCount == 0) {
	        		done = true;
	        	}
	        }
	        processed--;
		}
		
		int state = AL10.alGetSourcei(source, AL10.AL_SOURCE_STATE);
	    
	    if (state != AL10.AL_PLAYING) {
	    	AL10.alSourcePlay(source);
	    }
	}
public void update ( ) { if ( done ) { return ; } int processed = AL10 . alGetSourcei ( source , AL10 . AL_BUFFERS_PROCESSED ) ; while ( processed > 0 ) { unqueued . clear ( ) ; AL10 . alSourceUnqueueBuffers ( source , unqueued ) ; if ( stream ( unqueued . get ( 0 ) ) ) { AL10 . alSourceQueueBuffers ( source , unqueued ) ; } else { remainingBufferCount -- ; if ( remainingBufferCount == 0 ) { done = true ; } } processed -- ; } int state = AL10 . alGetSourcei ( source , AL10 . AL_SOURCE_STATE ) ; if ( state != AL10 . AL_PLAYING ) { AL10 . alSourcePlay ( source ) ; } }
Poll the bufferNames - check if we need to fill the bufferNames with another
section.

Most of the time this should be reasonably quick