- int i;
-
- /* If there are no input formats, return NULL right away. */
- sr_input_format *const *const inputs = sr_input_list();
- if (!inputs) {
- g_critical("No supported input formats available.");
- return NULL;
- }
-
- /* Otherwise, try to find an input module that can handle this file. */
- for (i = 0; inputs[i]; i++) {
- if (inputs[i]->format_match(filename.c_str()))
- break;
- }
-
- /* Return NULL if no input module wanted to touch this. */
- if (!inputs[i]) {
- g_critical("Error: no matching input module found.");
- return NULL;
- }
-
- return inputs[i];
-}
-
-sr_input* SigSession::load_input_file_format(const string &filename,
- function<void (const QString)> error_handler,
- sr_input_format *format)
-{
- struct stat st;
- sr_input *in;
-
- if (!format && !(format =
- determine_input_file_format(filename.c_str()))) {
- /* The exact cause was already logged. */
- return NULL;
- }
-
- if (stat(filename.c_str(), &st) == -1) {
- error_handler(tr("Failed to load file"));
- return NULL;
- }
-
- /* Initialize the input module. */
- if (!(in = new sr_input)) {
- qDebug("Failed to allocate input module.\n");
- return NULL;
- }
-
- in->format = format;
- in->param = NULL;
- if (in->format->init &&
- in->format->init(in, filename.c_str()) != SR_OK) {
- qDebug("Input format init failed.\n");
- return NULL;
- }
-
- sr_session_new();
-
- if (sr_session_dev_add(in->sdi) != SR_OK) {
- qDebug("Failed to use device.\n");
- sr_session_destroy();
- return NULL;
+ shared_ptr<pv::device::DevInst> default_device;
+ const list< shared_ptr<device::Device> > &devices =
+ _device_manager.devices();
+
+ if (!devices.empty()) {
+ // Fall back to the first device in the list.
+ default_device = devices.front();
+
+ // Try and find the demo device and select that by default
+ BOOST_FOREACH (shared_ptr<pv::device::Device> dev, devices)
+ if (strcmp(dev->dev_inst()->driver->name,
+ "demo") == 0) {
+ default_device = dev;
+ break;
+ }