X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fsession.c;h=fc7d0bc4b8dd908504bb05d99a1b291846235a5c;hb=499f5045dd505944319cdc388f6b3cd578ee9a6a;hp=50bad8be9be3a7a403216181cab820698d42b8eb;hpb=e8b5205bf336f2e0f59e5acd78b3bc9233ba61fd;p=libsigrok.git diff --git a/src/session.c b/src/session.c index 50bad8be..fc7d0bc4 100644 --- a/src/session.c +++ b/src/session.c @@ -365,7 +365,7 @@ SR_API int sr_session_dev_add(struct sr_session *session, sr_strerror(ret)); return ret; } - if ((ret = sdi->driver->dev_acquisition_start(sdi)) != SR_OK) { + if ((ret = sr_dev_acquisition_start(sdi)) != SR_OK) { sr_err("Failed to start acquisition of device in " "running session (%s)", sr_strerror(ret)); return ret; @@ -816,7 +816,7 @@ SR_API int sr_session_start(struct sr_session *session) ret = SR_ERR; break; } - ret = sdi->driver->dev_acquisition_start(sdi); + ret = sr_dev_acquisition_start(sdi); if (ret != SR_OK) { sr_err("Could not start %s device %s acquisition.", sdi->driver->name, sdi->connection_id); @@ -830,7 +830,7 @@ SR_API int sr_session_start(struct sr_session *session) lend = l->next; for (l = session->devs; l != lend; l = l->next) { sdi = l->data; - sdi->driver->dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); } /* TODO: Handle delayed stops. Need to iterate the event * sources... */ @@ -913,8 +913,7 @@ static gboolean session_stop_sync(void *user_data) for (node = session->devs; node; node = node->next) { sdi = node->data; - if (sdi->driver && sdi->driver->dev_acquisition_stop) - sdi->driver->dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); } return G_SOURCE_REMOVE; @@ -1189,6 +1188,7 @@ SR_PRIV int sr_session_source_add_internal(struct sr_session *session, return SR_OK; } +/** @private */ SR_PRIV int sr_session_fd_source_add(struct sr_session *session, void *key, gintptr fd, int events, int timeout, sr_receive_data_callback cb, void *cb_data) @@ -1450,6 +1450,7 @@ static void copy_src(struct sr_config *src, struct sr_datafeed_meta *meta_copy) g_memdup(src, sizeof(struct sr_config))); } +/** @private */ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet, struct sr_datafeed_packet **copy) { @@ -1483,8 +1484,15 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet, case SR_DF_LOGIC: logic = packet->payload; logic_copy = g_malloc(sizeof(*logic_copy)); + if (!logic_copy) + return SR_ERR; logic_copy->length = logic->length; logic_copy->unitsize = logic->unitsize; + logic_copy->data = g_malloc(logic->length * logic->unitsize); + if (!logic_copy->data) { + g_free(logic_copy); + return SR_ERR; + } memcpy(logic_copy->data, logic->data, logic->length * logic->unitsize); (*copy)->payload = logic_copy; break;