const shared_ptr<sigrok::Device> sr_dev = device->device();
+ sample_rate_.allow_user_entered_values(false);
+ if (sr_dev->config_check(ConfigKey::EXTERNAL_CLOCK, Capability::GET)) {
+ try {
+ auto gvar = sr_dev->config_get(ConfigKey::EXTERNAL_CLOCK);
+ if (gvar.gobj()) {
+ bool value = Glib::VariantBase::cast_dynamic<Glib::Variant<bool>>(
+ gvar).get();
+ sample_rate_.allow_user_entered_values(value);
+ }
+ } catch (Error& error) {
+ // Do nothing
+ }
+ }
+
+
if (sr_dev->config_check(ConfigKey::SAMPLERATE, Capability::LIST)) {
try {
gvar_dict = sr_dev->config_list(ConfigKey::SAMPLERATE);
- } catch (Error error) {
+ } catch (Error& error) {
qDebug() << tr("Failed to get sample rate list:") << error.what();
}
} else {
updating_sample_rate_ = true;
sample_rate_.set_value(samplerate);
updating_sample_rate_ = false;
- } catch (Error error) {
- qDebug() << tr("Failed to get value of sample rate:") << error.what();
+ } catch (Error& error) {
+ qDebug() << tr("Failed to get sample rate:") << error.what();
}
}
if (gvar.gobj())
g_variant_get(gvar.gobj(), "(tt)",
&min_sample_count, &max_sample_count);
- } catch (Error error) {
+ } catch (Error& error) {
qDebug() << tr("Failed to get sample limit list:") << error.what();
}
}
const shared_ptr<sigrok::Device> sr_dev = device->device();
sample_rate = sample_rate_.value();
- if (sample_rate == 0)
- return;
try {
sr_dev->config_set(ConfigKey::SAMPLERATE,
Glib::Variant<guint64>::create(sample_rate));
update_sample_rate_selector();
- } catch (Error error) {
+ } catch (Error& error) {
qDebug() << tr("Failed to configure samplerate:") << error.what();
return;
}
sr_dev->config_set(ConfigKey::LIMIT_SAMPLES,
Glib::Variant<guint64>::create(sample_count));
update_sample_count_selector();
- } catch (Error error) {
+ } catch (Error& error) {
qDebug() << tr("Failed to configure sample count:") << error.what();
return;
}
update_sample_rate_selector();
}
-void MainBar::session_error(const QString text, const QString info_text)
-{
- QMetaObject::invokeMethod(this, "show_session_error",
- Qt::QueuedConnection, Q_ARG(QString, text),
- Q_ARG(QString, info_text));
-}
-
void MainBar::show_session_error(const QString text, const QString info_text)
{
QMessageBox msg(this);
const pv::util::Timestamp& end_time = trace_view->cursors()->second()->time();
const uint64_t start_sample = (uint64_t)max(
- (double)0, start_time.convert_to<double>() * samplerate);
+ 0.0, start_time.convert_to<double>() * samplerate);
const uint64_t end_sample = (uint64_t)max(
- (double)0, end_time.convert_to<double>() * samplerate);
+ 0.0, end_time.convert_to<double>() * samplerate);
if ((start_sample == 0) && (end_sample == 0)) {
// Both cursors are negative and were clamped to 0
void MainBar::on_config_changed()
{
+ // We want to also call update_sample_rate_selector() here in case
+ // the user changed the SR_CONF_EXTERNAL_CLOCK option. However,
+ // commit_sample_rate() does this already, so we don't call it here
+
commit_sample_count();
commit_sample_rate();
}