+ }
+
+ signals_changed();
+}
+
+shared_ptr<view::Signal> Session::signal_from_channel(
+ shared_ptr<Channel> channel) const
+{
+ lock_guard<boost::shared_mutex> lock(signals_mutex_);
+ for (shared_ptr<view::Signal> sig : signals_) {
+ assert(sig);
+ if (sig->channel() == channel)
+ return sig;
+ }
+ return shared_ptr<view::Signal>();
+}
+
+void Session::read_sample_rate(shared_ptr<Device> device)
+{
+ const auto keys = device_->config_keys(ConfigKey::DEVICE_OPTIONS);
+ const auto iter = keys.find(ConfigKey::SAMPLERATE);
+ const uint64_t sample_rate = (iter != keys.end() &&
+ (*iter).second.find(sigrok::GET) != (*iter).second.end()) ?
+ VariantBase::cast_dynamic<Variant<guint64>>(
+ device->config_get(ConfigKey::SAMPLERATE)).get() : 0;
+
+ // Set the sample rate of all data
+ const set< shared_ptr<data::SignalData> > data_set = get_data();
+ for (shared_ptr<data::SignalData> data : data_set) {
+ assert(data);
+ data->set_samplerate(sample_rate);