]> sigrok.org Git - pulseview.git/blobdiff - pv/devices/sessionfile.cpp
Fix #605 by closing current device when another is selected
[pulseview.git] / pv / devices / sessionfile.cpp
index 4ca982ae7cf4f3897dbf83778faecf3ff0a08dfd..e6920ff5e299a6a5b5e437b2768d3d020549f2e0 100644 (file)
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
+#include <boost/filesystem.hpp>
+
 #include "sessionfile.hpp"
 
 namespace pv {
 namespace devices {
 
-SessionFile::SessionFile(const std::shared_ptr<sigrok::Context> &context,
+SessionFile::SessionFile(const std::shared_ptr<sigrok::Context> context,
        const std::string &file_name) :
-       context_(context),
-       file_name_(file_name) {
+       File(file_name),
+       context_(context) {
 }
 
-void SessionFile::create() {
+void SessionFile::open() {
+       if (session_)
+               close();
+
        session_ = context_->load_session(file_name_);
        device_ = session_->devices()[0];
 }
 
+void SessionFile::close() {
+       if (session_)
+               session_->remove_devices();
+}
+
 } // namespace devices
 } // namespace pv