From 84a7e6a33ea094dfebb69e2c0d4af757c9c350a8 Mon Sep 17 00:00:00 2001 From: DreamSourceLab Date: Thu, 21 Nov 2019 17:40:10 -0800 Subject: [PATCH] Fix vertical scale issue after stop capture @ dso mode --- DSView/pv/view/dsosignal.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/DSView/pv/view/dsosignal.cpp b/DSView/pv/view/dsosignal.cpp index 65463f02..cb31c744 100755 --- a/DSView/pv/view/dsosignal.cpp +++ b/DSView/pv/view/dsosignal.cpp @@ -62,6 +62,7 @@ DsoSignal::DsoSignal(boost::shared_ptr dev_inst, Signal(dev_inst, probe), _data(data), _scale(0), + _stop_scale(1), _en_lock(false), _show(true), _vDialActive(false), @@ -120,7 +121,7 @@ boost::shared_ptr DsoSignal::dso_data() const void DsoSignal::set_scale(int height) { - _scale = height / (_ref_max - _ref_min); + _scale = height / (_ref_max - _ref_min) * _stop_scale; } float DsoSignal::get_scale() @@ -216,8 +217,10 @@ bool DsoSignal::go_vDialPre(bool manul) _vDial->set_sel(_vDial->get_sel() - 1); _dev_inst->set_config(_probe, NULL, SR_CONF_PROBE_VDIV, g_variant_new_uint64(_vDial->get_value())); - if (_view->session().get_capture_state() == SigSession::Stopped) - _scale *= pre_vdiv/_vDial->get_value(); + if (_view->session().get_capture_state() == SigSession::Stopped) { + _stop_scale *= pre_vdiv/_vDial->get_value(); + set_scale(get_view_rect().height()); + } _dev_inst->set_config(_probe, NULL, SR_CONF_PROBE_OFFSET, g_variant_new_uint16(_zero_offset)); @@ -244,8 +247,10 @@ bool DsoSignal::go_vDialNext(bool manul) _vDial->set_sel(_vDial->get_sel() + 1); _dev_inst->set_config(_probe, NULL, SR_CONF_PROBE_VDIV, g_variant_new_uint64(_vDial->get_value())); - if (_view->session().get_capture_state() == SigSession::Stopped) - _scale *= pre_vdiv/_vDial->get_value(); + if (_view->session().get_capture_state() == SigSession::Stopped) { + _stop_scale *= pre_vdiv/_vDial->get_value(); + set_scale(get_view_rect().height()); + } _dev_inst->set_config(_probe, NULL, SR_CONF_PROBE_OFFSET, g_variant_new_uint16(_zero_offset)); @@ -782,6 +787,8 @@ void DsoSignal::paint_mid(QPainter &p, int left, int right, QColor fore, QColor assert(_view); assert(right >= left); + if (_view->session().get_capture_state() == SigSession::Running) + _stop_scale = 1; if (enabled()) { const int index = get_index();