]> sigrok.org Git - libsigrok.git/blobdiff - src/input/wav.c
input/wav: Send END packet on cleanup.
[libsigrok.git] / src / input / wav.c
index 5669e8a4453c456195c95af9d92432167f89cb75..fabe92c7a5fbfbd50c8c6e7096903ac871168502 100644 (file)
@@ -238,17 +238,9 @@ static void send_chunk(const struct sr_input *in, int offset, int num_samples)
 
 static int receive(const struct sr_input *in, GString *buf)
 {
-       struct sr_datafeed_packet packet;
        struct context *inc;
        int offset, chunk_samples, total_samples, processed, max_chunk_samples, num_samples, i;
 
-       if (buf->len == 0) {
-               /* End of stream. */
-               packet.type = SR_DF_END;
-               sr_session_send(in->sdi, &packet);
-               return SR_OK;
-       }
-
        g_string_append_len(in->buf, buf->str, buf->len);
 
        if (!in->priv) {
@@ -308,8 +300,16 @@ static int receive(const struct sr_input *in, GString *buf)
 
 static int cleanup(struct sr_input *in)
 {
-       g_free(in->priv);
-       in->priv = NULL;
+       struct sr_datafeed_packet packet;
+
+       if (in->priv) {
+               /* End of stream. */
+               packet.type = SR_DF_END;
+               sr_session_send(in->sdi, &packet);
+
+               g_free(in->priv);
+               in->priv = NULL;
+       }
 
        return SR_OK;
 }