X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=74cb82dc99aae5b847ca5660bc56d953e931d168;hp=852de2981eb7bd43d9e82cf03154ae7bbeadbff7;hb=bb7dd726eb7159ddd80d94ede791f2e2a9eaef0f;hpb=47e9e7bbc3a4e91a960f4cbb1db48c5aff6dcace diff --git a/pv/session.cpp b/pv/session.cpp index 852de29..74cb82d 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -144,8 +144,12 @@ void Session::set_device(shared_ptr device) device_.reset(); // Remove all stored data - for (std::shared_ptr view : views_) + for (std::shared_ptr view : views_) { view->clear_signals(); +#ifdef ENABLE_DECODE + view->clear_decode_traces(); +#endif + } for (const shared_ptr d : all_signal_data_) d->clear(); all_signal_data_.clear(); @@ -158,7 +162,6 @@ void Session::set_device(shared_ptr device) } logic_data_.reset(); - decode_traces_.clear(); signals_changed(); @@ -314,10 +317,10 @@ bool Session::add_decoder(srd_decoder *const dec) shared_ptr signalbase = shared_ptr(new data::SignalBase(nullptr)); - shared_ptr d( - new view::DecodeTrace(*this, signalbase, decoder_stack, - decode_traces_.size())); - decode_traces_.push_back(d); + signalbase->set_decoder_stack(decoder_stack); + + for (std::shared_ptr view : views_) + view->add_decode_trace(signalbase); } catch (std::runtime_error e) { return false; } @@ -330,19 +333,10 @@ bool Session::add_decoder(srd_decoder *const dec) return true; } -vector< shared_ptr > Session::get_decode_signals() const +void Session::remove_decode_signal(shared_ptr signalbase) { - return decode_traces_; -} - -void Session::remove_decode_signal(view::DecodeTrace *signal) -{ - for (auto i = decode_traces_.begin(); i != decode_traces_.end(); i++) - if ((*i).get() == signal) { - decode_traces_.erase(i); - signals_changed(); - return; - } + for (std::shared_ptr view : views_) + view->remove_decode_trace(signalbase); } #endif @@ -365,8 +359,12 @@ void Session::update_signals() if (!device_) { signalbases_.clear(); logic_data_.reset(); - for (std::shared_ptr view : views_) + for (std::shared_ptr view : views_) { view->clear_signals(); +#ifdef ENABLE_DECODE + view->clear_decode_traces(); +#endif + } return; } @@ -376,8 +374,12 @@ void Session::update_signals() if (!sr_dev) { signalbases_.clear(); logic_data_.reset(); - for (std::shared_ptr view : views_) + for (std::shared_ptr view : views_) { view->clear_signals(); +#ifdef ENABLE_DECODE + view->clear_decode_traces(); +#endif + } return; }