X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Finputfile.cpp;fp=pv%2Fdevices%2Finputfile.cpp;h=935b0c47bdf6e41714bf889a530af61513ccb420;hp=22c9b1c8297e4e3d8d71eb73d925c122fc67c8f9;hb=519d0ccbe67d005a9c442795ce3b8255e78ca46d;hpb=e40a79cb13eef1ca4f8e7670ac4a36e56b26a23c diff --git a/pv/devices/inputfile.cpp b/pv/devices/inputfile.cpp index 22c9b1c..935b0c4 100644 --- a/pv/devices/inputfile.cpp +++ b/pv/devices/inputfile.cpp @@ -36,19 +36,18 @@ InputFile::InputFile(const std::shared_ptr &context, const std::map &options) : File(file_name), context_(context), - input_(format->create_input(options)), + format_(format), + options_(options), interrupt_(false) { - if (!input_) - throw QString("Failed to create input"); } void InputFile::open() { if (session_) close(); - - session_ = context_->create_session(); + else + session_ = context_->create_session(); } void InputFile::close() @@ -67,7 +66,11 @@ void InputFile::run() bool need_device = true; assert(session_); - assert(input_); + + input_ = format_->create_input(options_); + + if (!input_) + throw QString("Failed to create input"); interrupt_ = false; std::ifstream f(file_name_, std::ios::binary); @@ -86,6 +89,7 @@ void InputFile::run() break; } + session_->remove_devices(); // Remove instance from previous run session_->add_device(device_); need_device = false; }