- _sampling_thread.reset(new boost::thread(
- &SigSession::load_thread_proc, this, name,
- error_handler));
+
+ if (sr_session_load(name.c_str()) == SR_OK) {
+ GSList *devlist = NULL;
+ sr_session_dev_list(&devlist);
+
+ if (!devlist || !devlist->data ||
+ sr_session_start() != SR_OK) {
+ error_handler(tr("Failed to start session."));
+ return;
+ }
+
+ sr_dev_inst *const sdi = (sr_dev_inst*)devlist->data;
+ g_slist_free(devlist);
+
+ update_signals(sdi);
+ read_sample_rate(sdi);
+
+ _sampling_thread = boost::thread(
+ &SigSession::load_session_thread_proc, this,
+ error_handler);
+
+ } else {
+ sr_input *in = NULL;
+
+ if (!(in = load_input_file_format(name.c_str(),
+ error_handler)))
+ return;
+
+ update_signals(in->sdi);
+ read_sample_rate(in->sdi);
+
+ _sampling_thread = boost::thread(
+ &SigSession::load_input_thread_proc, this,
+ name, in, error_handler);
+ }