]> sigrok.org Git - pulseview.git/blobdiff - pv/session.cpp
AnalogSignal: Use setting change handler for threshold display
[pulseview.git] / pv / session.cpp
index b022bd02c0c02681bd576a06fff085b89f27e0c8..4dcc2e8b7b77f5da1cfce26781e694d16f23eb7f 100644 (file)
@@ -91,6 +91,9 @@ using sigrok::Session;
 using Glib::VariantBase;
 
 namespace pv {
+
+shared_ptr<sigrok::Context> Session::sr_context;
+
 Session::Session(DeviceManager &device_manager, QString name) :
        device_manager_(device_manager),
        default_name_(name),
@@ -316,9 +319,9 @@ void Session::restore_settings(QSettings &settings)
                int decode_signals = settings.value("decode_signals").toInt();
 
                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
+                       settings.beginGroup("decode_signal" + QString::number(i));
+                       shared_ptr<data::DecodeSignal> signal = add_decode_signal();
+                       signal->restore_settings(settings);
                        settings.endGroup();
                }
 #endif
@@ -619,8 +622,6 @@ void Session::register_view(shared_ptr<views::ViewBase> view)
                                switch (signalbase->type()) {
                                case data::SignalBase::AnalogChannel:
                                case data::SignalBase::LogicChannel:
-                               case data::SignalBase::A2LChannel:
-                                       break;
                                case data::SignalBase::DecodeChannel:
 #ifdef ENABLE_DECODE
                                        trace_view->add_decode_signal(
@@ -682,31 +683,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)