]> sigrok.org Git - libsigrok.git/blobdiff - src/session_driver.c
Factor out std_session_send_df_end() helper.
[libsigrok.git] / src / session_driver.c
index 0793104b0ccc63683c5120a5279fbb1a7fa4ead7..1db2cdff255ca26d14a3d9509d174ff04ecb16c2 100644 (file)
@@ -127,8 +127,13 @@ static gboolean stream_session_data(struct sr_dev_inst *sdi)
 
        buf = g_malloc(CHUNKSIZE);
 
-       ret = zip_fread(vdev->capfile, buf,
-                       CHUNKSIZE / vdev->unitsize * vdev->unitsize);
+       /* unitsize is not defined for purely analog session files. */
+       if (vdev->unitsize)
+               ret = zip_fread(vdev->capfile, buf,
+                               CHUNKSIZE / vdev->unitsize * vdev->unitsize);
+       else
+               ret = zip_fread(vdev->capfile, buf, CHUNKSIZE);
+
        if (ret > 0) {
                got_data = TRUE;
                if (vdev->cur_analog_channel != 0) {
@@ -173,7 +178,6 @@ static int receive_data(int fd, int revents, void *cb_data)
 {
        struct sr_dev_inst *sdi;
        struct session_vdev *vdev;
-       struct sr_datafeed_packet packet;
 
        (void)fd;
        (void)revents;
@@ -194,9 +198,8 @@ static int receive_data(int fd, int revents, void *cb_data)
                zip_discard(vdev->archive);
                vdev->archive = NULL;
        }
-       packet.type = SR_DF_END;
-       packet.payload = NULL;
-       sr_session_send(sdi, &packet);
+
+       std_session_send_df_end(sdi, LOG_PREFIX);
 
        return G_SOURCE_REMOVE;
 }