X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=31cbb73c19e1fb37fde8955dff2de9e35062f683;hp=df09ff3b2ebc0b924a9158158de9a2362ab385db;hb=bcd64b9b7ae8187a9519c374e2552f6a00904251;hpb=0a4162a4bd844574319f8b26b05f4fcdf837bb70 diff --git a/pv/session.cpp b/pv/session.cpp index df09ff3b..31cbb73c 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -383,7 +383,7 @@ void Session::set_device(shared_ptr device) device_.reset(); - // Revert name back to default name (e.g. "Untitled-1") as the data is gone + // Revert name back to default name (e.g. "Session 1") as the data is gone name_ = default_name_; name_changed(); @@ -415,16 +415,17 @@ void Session::set_device(shared_ptr device) device_->open(); } catch (const QString &e) { device_.reset(); - device_changed(); - throw; } - device_->session()->add_datafeed_callback([=] - (shared_ptr device, shared_ptr packet) { - data_feed_in(device, packet); - }); + if (device_) { + device_->session()->add_datafeed_callback([=] + (shared_ptr device, shared_ptr packet) { + data_feed_in(device, packet); + }); + + update_signals(); + } - update_signals(); device_changed(); } @@ -532,7 +533,7 @@ void Session::start_capture(function error_handler) for (const shared_ptr d : all_signal_data_) d->clear(); - // Revert name back to default name (e.g. "Untitled-1") as the data is gone + // Revert name back to default name (e.g. "Session 1") as the data is gone name_ = default_name_; name_changed(); @@ -954,7 +955,7 @@ void Session::feed_in_logic(shared_ptr logic) // Create a new data segment cur_logic_segment_ = shared_ptr( - new data::LogicSegment(logic, cur_samplerate_)); + new data::LogicSegment(*logic_data_, logic, cur_samplerate_)); logic_data_->push_segment(cur_logic_segment_); // @todo Putting this here means that only listeners querying @@ -997,11 +998,6 @@ void Session::feed_in_analog(shared_ptr analog) // in the sweep containing this segment. sweep_beginning = true; - // Create a segment, keep it in the maps of channels - segment = shared_ptr( - new data::AnalogSegment(cur_samplerate_)); - cur_analog_segments_[channel] = segment; - // Find the analog data associated with the channel shared_ptr base = signalbase_from_channel(channel); assert(base); @@ -1009,6 +1005,11 @@ void Session::feed_in_analog(shared_ptr analog) shared_ptr data(base->analog_data()); assert(data); + // Create a segment, keep it in the maps of channels + segment = shared_ptr( + new data::AnalogSegment(*data, cur_samplerate_)); + cur_analog_segments_[channel] = segment; + // Push the segment into the analog data. data->push_segment(segment); }