@Override
    public void setListener(Listener listener) {
        checkDead();
        synchronized (threadLock) {
            if (audioDisabled) {
                return;
            }

            if (this.listener != null) {
                // previous listener no longer associated with current renderer
                this.listener.setRenderer(null);
            }

            this.listener = listener;

            if (this.listener != null) {
                this.listener.setRenderer(this);
                setListenerParams(listener);
            } else {
                logger.info("Listener set to null.");
            }
        }
    }
Internal update logic called from the decoder thread within the lock.
Fills streaming buffers and restarts starved sources. Deletes unused objects.

@param tpf Time per frame (currently unused).
jme3-core/src/main/java/com/jme3/audio/openal/ALAudioRenderer.java