From 14cbfcc8050f4fa116875a3d5baad7a114f5b061 Mon Sep 17 00:00:00 2001 From: Martin Ling Date: Tue, 14 Jan 2014 20:59:08 +0000 Subject: [PATCH] Set LIMIT_FRAMES to 1 if supported. --- pv/toolbars/samplingbar.cpp | 43 +++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/pv/toolbars/samplingbar.cpp b/pv/toolbars/samplingbar.cpp index 15eaf3b4..80c822e2 100644 --- a/pv/toolbars/samplingbar.cpp +++ b/pv/toolbars/samplingbar.cpp @@ -208,24 +208,6 @@ void SamplingBar::update_sample_count_selector() assert(sdi); - _sample_count_supported = false; - - if (sr_config_list(sdi->driver, sdi, NULL, - SR_CONF_DEVICE_OPTIONS, &gvar) == SR_OK) - { - gsize num_opts; - const int *const options = (const int32_t *)g_variant_get_fixed_array( - gvar, &num_opts, sizeof(int32_t)); - for (unsigned int i = 0; i < num_opts; i++) - { - if (options[i] == SR_CONF_LIMIT_SAMPLES) - { - _sample_count_supported = true; - break; - } - } - } - if (_sample_count_supported) _sample_count.show_min_max_step(0, UINT64_MAX, 1); else @@ -281,6 +263,8 @@ void SamplingBar::commit_sample_rate() void SamplingBar::on_device_selected() { + GVariant *gvar; + using namespace pv::popups; if (_updating_device_selector) @@ -299,6 +283,29 @@ void SamplingBar::on_device_selected() Probes *const probes = new Probes(_session, this); _probes_button.set_popup(probes); + // Update supported options. + _sample_count_supported = false; + + if (sr_config_list(sdi->driver, sdi, NULL, + SR_CONF_DEVICE_OPTIONS, &gvar) == SR_OK) + { + gsize num_opts; + const int *const options = (const int32_t *)g_variant_get_fixed_array( + gvar, &num_opts, sizeof(int32_t)); + for (unsigned int i = 0; i < num_opts; i++) + { + switch (options[i]) { + case SR_CONF_LIMIT_SAMPLES: + _sample_count_supported = true; + break; + case SR_CONF_LIMIT_FRAMES: + sr_config_set(sdi, NULL, SR_CONF_LIMIT_FRAMES, + g_variant_new_uint64(1)); + break; + } + } + } + // Update sweep timing widgets. update_sample_count_selector(); update_sample_rate_selector(); -- 2.30.2