+ if (pawd)
+ pthread_mutex_lock(&pawd->mutex);
+ ret = btr_node_status(wn->btrn, wn->min_iqs, BTR_NT_LEAF);
+ if (pawd)
+ pthread_mutex_unlock(&pawd->mutex);
+
+ if (ret == 0) {
+ /*
+ * Even though the node status is zero, we might have data
+ * available, but the output buffer is full. If we don't set a
+ * timeout here, we are woken up only if new data arrives,
+ * which might be too late and result in a buffer underrun in
+ * the playing thread. To avoid this we never sleep longer than
+ * the (default) buffer time.
+ */
+ return sched_request_timeout_ms(20, s);
+ }