X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdevices%2Finputfile.cpp;h=22c9b1c8297e4e3d8d71eb73d925c122fc67c8f9;hb=c8e50b6efe18ff5ede06f0321d27d572dc3a6bc5;hp=e92bf208bf17989039bed7b4dbbbbe277f49093f;hpb=dd3fd4df34d129c83f7f5d80ff1e8b998beca63d;p=pulseview.git diff --git a/pv/devices/inputfile.cpp b/pv/devices/inputfile.cpp index e92bf20..22c9b1c 100644 --- a/pv/devices/inputfile.cpp +++ b/pv/devices/inputfile.cpp @@ -37,19 +37,32 @@ InputFile::InputFile(const std::shared_ptr &context, File(file_name), context_(context), input_(format->create_input(options)), - interrupt_(false) { + interrupt_(false) +{ if (!input_) throw QString("Failed to create input"); } -void InputFile::create() { +void InputFile::open() +{ + if (session_) + close(); + session_ = context_->create_session(); } -void InputFile::start() { +void InputFile::close() +{ + if (session_) + session_->remove_devices(); +} + +void InputFile::start() +{ } -void InputFile::run() { +void InputFile::run() +{ char buffer[BufferSize]; bool need_device = true; @@ -57,7 +70,7 @@ void InputFile::run() { assert(input_); interrupt_ = false; - std::ifstream f(file_name_); + std::ifstream f(file_name_, std::ios::binary); while (!interrupt_ && f) { f.read(buffer, BufferSize); const std::streamsize size = f.gcount(); @@ -84,7 +97,8 @@ void InputFile::run() { input_->end(); } -void InputFile::stop() { +void InputFile::stop() +{ interrupt_ = true; }