Fix #805 by resetting selected device on failure
[pulseview.git] / pv / mainwindow.cpp
index 1a05907c9c1a4470be862fdf2691887411b915e3..2558cb07692fe497e87d262fad574bc81ad70bfd 100644 (file)
@@ -74,6 +74,7 @@ using std::cerr;
 using std::endl;
 using std::list;
 using std::map;
+using std::max;
 using std::pair;
 using std::shared_ptr;
 using std::string;
@@ -257,7 +258,8 @@ void MainWindow::export_file(shared_ptr<OutputFormat> format,
                const pv::util::Timestamp& start_time = view_->cursors()->first()->time();
                const pv::util::Timestamp& end_time = view_->cursors()->second()->time();
 
-               const uint64_t start_sample = start_time.convert_to<double>() * samplerate;
+               const uint64_t start_sample =
+                       std::max((double)0, start_time.convert_to<double>() * samplerate);
                const uint64_t end_sample = end_time.convert_to<double>() * samplerate;
 
                sample_range = std::make_pair(start_sample, end_sample);
@@ -880,8 +882,11 @@ void MainWindow::device_selected()
 {
        // Set the title to include the device/file name
        const shared_ptr<devices::Device> device = session_.device();
-       if (!device)
+
+       if (!device) {
+               main_bar_->reset_device_selector();
                return;
+       }
 
        const string display_name = device->display_name(device_manager_);
        setWindowTitle(tr("%1 - PulseView").arg(display_name.c_str()));