]> sigrok.org Git - libsigrok.git/blobdiff - src/session.c
Lower dependency to glib 2.32.
[libsigrok.git] / src / session.c
index f325e78b4e6b6ee9c504f66c0433e2f0d4dfc6a0..3d02e677fa10bdf5171dc631a3e256d3b6674866 100644 (file)
@@ -316,13 +316,40 @@ SR_API int sr_session_datafeed_callback_add(struct sr_session *session,
        return SR_OK;
 }
 
+/**
+ * Get the trigger assigned to this session.
+ *
+ * @param session The session to use.
+ *
+ * @retval NULL Invalid (NULL) session was passed to the function.
+ * @retval other The trigger assigned to this session (can be NULL).
+ *
+ * @since 0.4.0
+ */
 SR_API struct sr_trigger *sr_session_trigger_get(struct sr_session *session)
 {
+       if (!session)
+               return NULL;
+
        return session->trigger;
 }
 
+/**
+ * Set the trigger of this session.
+ *
+ * @param session The session to use. Must not be NULL.
+ * @param trig The trigger to assign to this session. Can be NULL.
+ *
+ * @retval SR_OK Success.
+ * @retval SR_ERR_ARG Invalid argument.
+ *
+ * @since 0.4.0
+ */
 SR_API int sr_session_trigger_set(struct sr_session *session, struct sr_trigger *trig)
 {
+       if (!session)
+               return SR_ERR_ARG;
+
        session->trigger = trig;
 
        return SR_OK;
@@ -385,7 +412,6 @@ static int sr_session_iteration(struct sr_session *session, gboolean block)
        return SR_OK;
 }
 
-
 static int verify_trigger(struct sr_trigger *trigger)
 {
        struct sr_trigger_stage *stage;
@@ -958,8 +984,8 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet,
        case SR_DF_META:
                meta = packet->payload;
                meta_copy = g_malloc(sizeof(struct sr_datafeed_meta));
-               meta_copy->config = g_slist_copy_deep(meta->config,
-                               (GCopyFunc)copy_src, NULL);
+               meta_copy->config = g_slist_copy(meta->config);
+               g_slist_foreach(meta_copy->config, (GCopyFunc)copy_src, NULL);
                (*copy)->payload = meta_copy;
                break;
        case SR_DF_LOGIC: