]> sigrok.org Git - pulseview.git/commitdiff
session: apply input format match to interactively loaded files, too
authorGerhard Sittig <redacted>
Mon, 14 May 2018 18:25:41 +0000 (20:25 +0200)
committerUwe Hermann <redacted>
Thu, 17 May 2018 20:41:35 +0000 (22:41 +0200)
Move the format match logic from load_init_file() to load_file(), so
that it transparently takes effect on each "opened" file. Users still
can choose to "import" files and specify options when required. In the
case of lookup miss, sigrok session is assumed as before.

This fixes the remainder of bug #1015.

pv/session.cpp

index 50e89e567041c2ec186e47e0d387457808f452a3..6767951cf85961ea303d9fc6f830e8a7d9eb576d 100644 (file)
@@ -483,7 +483,6 @@ void Session::load_init_file(const string &file_name, const string &format)
        map<string, Glib::VariantBase> input_opts;
 
        if (!format.empty()) {
-               // Got a user provided input format spec.
                const map<string, shared_ptr<InputFormat> > formats =
                        device_manager_.context()->input_formats();
                auto user_opts = pv::util::split_string(format, ":");
@@ -500,11 +499,6 @@ void Session::load_init_file(const string &file_name, const string &format)
                input_format = (*iter).second;
                input_opts = input_format_options(user_opts,
                        input_format->options());
-       } else {
-               // (Try to) auto detect the input format. Lookup failure
-               // is not fatal, when no input module claimed responsibility,
-               // then a session file gets loaded.
-               input_format = device_manager_.context()->input_format_match(file_name);
        }
 
        load_file(QString::fromStdString(file_name), input_format, input_opts);
@@ -517,6 +511,10 @@ void Session::load_file(QString file_name,
        const QString errorMessage(
                QString("Failed to load file %1").arg(file_name));
 
+       // In the absence of a caller's format spec, try to auto detect.
+       // Assume "sigrok session file" upon lookup miss.
+       if (!format)
+               format = device_manager_.context()->input_format_match(file_name.toStdString());
        try {
                if (format)
                        set_device(shared_ptr<devices::Device>(