+ ret = btr_node_status(btrn, wn->min_iqs, BTR_NT_LEAF);
+ if (ret == 0)
+ return;
+ btr_merge(btrn, wn->min_iqs);
+ bytes = btr_next_buffer(btrn, &data);
+ if (ret < 0 || bytes < pad->bytes_per_frame) { /* eof */
+ assert(btr_no_parent(btrn));
+ ret = -E_ALSA_EOF;
+ if (!pad->handle)
+ goto err;
+ /* wait until pending frames are played */
+ avail = snd_pcm_avail_update(pad->handle);
+ if (avail + 1000 > pad->buffer_frames)
+ goto err;
+ PARA_DEBUG_LOG("waiting for device to drain\n");
+ return;
+ }