+ time_diff = time_cur - time_last;
+ time_last = time_cur;
+
+ nb_to_send = cur_samplerate * time_diff;
+
+ if (limit_samples) {
+ nb_to_send = MIN(nb_to_send,
+ limit_samples - mydata->samples_counter);
+ }
+
+ /* Make sure we don't overflow. */
+ nb_to_send = MIN(nb_to_send, BUFSIZE);
+
+ if (nb_to_send) {
+ samples_generator(buf, nb_to_send, data);
+ mydata->samples_counter += nb_to_send;
+
+ g_io_channel_write_chars(channels[1], (gchar *)&buf,
+ nb_to_send, (gsize *)&bytes_written, NULL);
+ }
+
+ /* Check if we're done. */
+ if ((limit_msec && time_cur * 1000 > limit_msec) ||
+ (limit_samples && mydata->samples_counter >= limit_samples))
+ {