X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=5f2bc8ea0544de070b62ff33fd9b5f2d66d06c30;hp=70637437e08b5ad1ea867e58ae4573956cc30bb9;hb=1dccc4ad96fd764c30b64502e3de570ff6cc04ba;hpb=adb240c01eb999c0abcafcf92c302b97475f7949 diff --git a/pv/session.cpp b/pv/session.cpp index 70637437..5f2bc8ea 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -123,30 +123,26 @@ void Session::set_device(shared_ptr device) // Ensure we are not capturing before setting the device stop_capture(); - // Are we setting a session device? - const auto session_device = - dynamic_pointer_cast(device); - - // Did we have a session device selected previously? - const auto prev_session_device = - dynamic_pointer_cast(device_); - if (device_) { session_->remove_datafeed_callbacks(); - if (!prev_session_device) { + + // Did we have a hardware device selected previously? + if (!dynamic_pointer_cast(device_)) { device_->close(); session_->remove_devices(); } } - if (session_device) - session_ = session_device->parent(); - decode_traces_.clear(); if (device) { - if (!session_device) - { + // Are we setting a session device? + const auto session_device = + dynamic_pointer_cast(device); + + if (session_device) + session_ = session_device->parent(); + else { session_ = device_manager_.context()->create_session(); try {