]> sigrok.org Git - pulseview.git/blobdiff - pv/session.cpp
Fix #831 by saving/restoring the PD channel mapping
[pulseview.git] / pv / session.cpp
index b022bd02c0c02681bd576a06fff085b89f27e0c8..732f4a8cbf55b69c7befe816cba3921f23fb80ec 100644 (file)
@@ -317,8 +317,8 @@ void Session::restore_settings(QSettings &settings)
 
                for (int i = 0; i < decode_signals; i++) {
                        settings.beginGroup("decode_signal" + QString::number(i++));
-                       // TODO Split up add_decoder() into add_decode_signal() and add_decoder(),
-                       // then call add_decode_signal() and signal->restore_settings() here
+                       shared_ptr<data::DecodeSignal> signal = add_decode_signal();
+                       signal->restore_settings(settings);
                        settings.endGroup();
                }
 #endif
@@ -682,31 +682,27 @@ const unordered_set< shared_ptr<data::SignalBase> > Session::signalbases() const
 }
 
 #ifdef ENABLE_DECODE
-bool Session::add_decoder(srd_decoder *const dec)
+shared_ptr<data::DecodeSignal> Session::add_decode_signal()
 {
-       if (!dec)
-               return false;
+       shared_ptr<data::DecodeSignal> signal;
 
        try {
                // Create the decode signal
-               shared_ptr<data::DecodeSignal> signal =
-                       make_shared<data::DecodeSignal>(*this);
+               signal = make_shared<data::DecodeSignal>(*this);
 
                signalbases_.insert(signal);
 
                // Add the decode signal to all views
                for (shared_ptr<views::ViewBase> view : views_)
                        view->add_decode_signal(signal);
-
-               // Add decoder
-               signal->stack_decoder(dec);
        } catch (runtime_error e) {
-               return false;
+               remove_decode_signal(signal);
+               return nullptr;
        }
 
        signals_changed();
 
-       return true;
+       return signal;
 }
 
 void Session::remove_decode_signal(shared_ptr<data::DecodeSignal> signal)