- nb_to_send = limit_samples - mydata->samples_counter;
- else
- nb_to_send = BUFSIZE; /* Continuous mode */
-
- if (limit_msec) {
- msec_elapsed = g_timer_elapsed(mydata->timer, NULL) * 1000;
- if (msec_elapsed > limit_msec)
- nb_to_send = 0;
+ 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);