new devices::SessionFile(
device_manager_.context(),
file_name.toStdString())));
- } catch (Error e) {
+ } catch (Error& e) {
main_bar_->session_error(tr("Failed to load ") + file_name, e.what());
set_default_device();
main_bar_->update_device_list();
// Add the decode signal to all views
for (shared_ptr<views::ViewBase> view : views_)
view->add_decode_signal(signal);
- } catch (runtime_error e) {
+ } catch (runtime_error& e) {
remove_decode_signal(signal);
return nullptr;
}
try {
device_->start();
- } catch (Error e) {
+ } catch (Error& e) {
error_handler(e.what());
return;
}
try {
device_->run();
- } catch (Error e) {
+ } catch (Error& e) {
error_handler(e.what());
set_capture_state(Stopped);
return;
case SR_DF_LOGIC:
try {
feed_in_logic(dynamic_pointer_cast<Logic>(packet->payload()));
- } catch (bad_alloc) {
+ } catch (bad_alloc&) {
out_of_memory_ = true;
device_->stop();
}
case SR_DF_ANALOG:
try {
feed_in_analog(dynamic_pointer_cast<Analog>(packet->payload()));
- } catch (bad_alloc) {
+ } catch (bad_alloc&) {
out_of_memory_ = true;
device_->stop();
}
// devices use frames, and for those devices, we need to do it here.
{
lock_guard<recursive_mutex> lock(data_mutex_);
+
+ if (cur_logic_segment_)
+ cur_logic_segment_->set_complete();
+
+ for (auto entry : cur_analog_segments_) {
+ shared_ptr<data::AnalogSegment> segment = entry.second;
+ segment->set_complete();
+ }
+
cur_logic_segment_.reset();
cur_analog_segments_.clear();
}