]> sigrok.org Git - libsigrok.git/blobdiff - src/session_file.c
Make sr_session_new() and sr_session_load() require a context.
[libsigrok.git] / src / session_file.c
index b8a1cb60d8e098d2986319767db2760a982ec461..9a1e316e8fd0411158215d011d9ed91b8d7fc00d 100644 (file)
@@ -105,6 +105,7 @@ SR_PRIV int sr_sessionfile_check(const char *filename)
 /**
  * Load the session from the specified filename.
  *
+ * @param ctx The context in which to load the session.
  * @param filename The name of the session file to load.
  * @param session The session to load the file into.
  *
@@ -113,7 +114,8 @@ SR_PRIV int sr_sessionfile_check(const char *filename)
  * @retval SR_ERR_DATA Malformed session file
  * @retval SR_ERR This is not a session file
  */
-SR_API int sr_session_load(const char *filename, struct sr_session **session)
+SR_API int sr_session_load(struct sr_context *ctx, const char *filename,
+               struct sr_session **session)
 {
        GKeyFile *kf;
        GPtrArray *capturefiles;
@@ -151,7 +153,7 @@ SR_API int sr_session_load(const char *filename, struct sr_session **session)
                return SR_ERR;
        }
 
-       if ((ret = sr_session_new(session)) != SR_OK)
+       if ((ret = sr_session_new(ctx, session)) != SR_OK)
                return ret;
 
        ret = SR_OK;
@@ -180,11 +182,10 @@ SR_API int sr_session_load(const char *filename, struct sr_session **session)
                                        sr_session_dev_add(*session, sdi);
                                        (*session)->owned_devs = g_slist_append(
                                                        (*session)->owned_devs, sdi);
-
-                                       sr_config_set(sdi, NULL, SR_CONF_SESSIONFILE,
-                                                       g_variant_new_string(filename));
-                                       sr_config_set(sdi, NULL, SR_CONF_CAPTUREFILE,
-                                                       g_variant_new_string(val));
+                                       sdi->driver->config_set(SR_CONF_SESSIONFILE,
+                                                       g_variant_new_string(filename), sdi, NULL);
+                                       sdi->driver->config_set(SR_CONF_CAPTUREFILE,
+                                                       g_variant_new_string(val), sdi, NULL);
                                        g_ptr_array_add(capturefiles, val);
                                } else if (!strcmp(keys[j], "samplerate")) {
                                        if (!sdi) {
@@ -192,24 +193,24 @@ SR_API int sr_session_load(const char *filename, struct sr_session **session)
                                                break;
                                        }
                                        sr_parse_sizestring(val, &tmp_u64);
-                                       sr_config_set(sdi, NULL, SR_CONF_SAMPLERATE,
-                                                       g_variant_new_uint64(tmp_u64));
+                                       sdi->driver->config_set(SR_CONF_SAMPLERATE,
+                                                       g_variant_new_uint64(tmp_u64), sdi, NULL);
                                } else if (!strcmp(keys[j], "unitsize")) {
                                        if (!sdi) {
                                                ret = SR_ERR_DATA;
                                                break;
                                        }
                                        tmp_u64 = strtoull(val, NULL, 10);
-                                       sr_config_set(sdi, NULL, SR_CONF_CAPTURE_UNITSIZE,
-                                                       g_variant_new_uint64(tmp_u64));
+                                       sdi->driver->config_set(SR_CONF_CAPTURE_UNITSIZE,
+                                                       g_variant_new_uint64(tmp_u64), sdi, NULL);
                                } else if (!strcmp(keys[j], "total probes")) {
                                        if (!sdi) {
                                                ret = SR_ERR_DATA;
                                                break;
                                        }
                                        total_channels = strtoull(val, NULL, 10);
-                                       sr_config_set(sdi, NULL, SR_CONF_NUM_LOGIC_CHANNELS,
-                                                       g_variant_new_uint64(total_channels));
+                                       sdi->driver->config_set(SR_CONF_NUM_LOGIC_CHANNELS,
+                                                       g_variant_new_uint64(total_channels), sdi, NULL);
                                        for (p = 0; p < total_channels; p++) {
                                                snprintf(channelname, SR_MAX_CHANNELNAME_LEN, "%" PRIu64, p);
                                                sr_channel_new(sdi, p, SR_CHANNEL_LOGIC, FALSE,