diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index 17696b39..f85deacb 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -647,13 +647,16 @@ namespace pv { triggered = status.trig_hit & 0x01; uint64_t captured_cnt = status.trig_hit >> 2; + captured_cnt = ((uint64_t)status.captured_cnt0 + ((uint64_t)status.captured_cnt1 << 8) + ((uint64_t)status.captured_cnt2 << 16) + ((uint64_t)status.captured_cnt3 << 24) + (captured_cnt << 32)); - if (_device_agent.get_work_mode() == DSO) + int mode = _device_agent.get_work_mode(); + + if (mode == DSO) captured_cnt = captured_cnt * _signals.size() / get_ch_num(SR_CHANNEL_DSO); if (triggered) @@ -661,6 +664,10 @@ namespace pv else progress = captured_cnt * 100.0 / sample_limits; + if (progress == 100 && mode == LOGIC && _capture_data->get_logic()->have_data() == false){ + progress = 0; + } + return true; } return false;