diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index a0a88c25..5fd2d991 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -758,7 +758,8 @@ namespace pv break; } } - + + dsv_info("SigSession::init_signals(), clear signals"); clear_signals(); std::vector().swap(_signals); @@ -854,6 +855,7 @@ namespace pv if (!sigs.empty()) { + dsv_info("SigSession::reload(), clear signals"); clear_signals(); std::vector().swap(_signals); _signals = sigs; @@ -1989,7 +1991,7 @@ namespace pv } init_signals(); - dsv_info("%s", "Work mode is changed."); + dsv_info("Switch work mode to:%d", mode); broadcast_msg(DSV_MSG_DEVICE_MODE_CHANGED); return true; } @@ -2070,7 +2072,7 @@ namespace pv { auto *p = _signals[i]; p->sig_released(p); - + DESTROY_QT_LATER(p); } _signals.clear(); diff --git a/DSView/pv/view/dsldial.cpp b/DSView/pv/view/dsldial.cpp index 971a2029..e53b9df3 100644 --- a/DSView/pv/view/dsldial.cpp +++ b/DSView/pv/view/dsldial.cpp @@ -158,6 +158,12 @@ uint64_t dslDial::get_max() uint64_t dslDial::get_value() { + this->_div = this->_div; + + if (_sel < 0 || _sel >= _value.count()){ + assert(false); + } + return _value[_sel]; } diff --git a/DSView/pv/view/dsosignal.cpp b/DSView/pv/view/dsosignal.cpp index 3cc837eb..cc0462ae 100644 --- a/DSView/pv/view/dsosignal.cpp +++ b/DSView/pv/view/dsosignal.cpp @@ -109,7 +109,7 @@ DsoSignal::DsoSignal(data::DsoSnapshot *data, DsoSignal::DsoSignal(const DsoSignal &o) :Signal(NULL) -{ +{ } DsoSignal::DsoSignal(DsoSignal &o) @@ -119,7 +119,7 @@ DsoSignal::DsoSignal(DsoSignal &o) DsoSignal::~DsoSignal() { - DESTROY_OBJECT(_vDial); + DESTROY_OBJECT(_vDial); } void DsoSignal::set_scale(int height) @@ -1502,6 +1502,7 @@ double DsoSignal::get_voltage(uint64_t index) const double value = *_data->get_samples(index, index, get_index()); const int hw_offset = get_hw_offset(); + return (hw_offset - value) * _scale * _vDial->get_value() * _vDial->get_factor() * DS_CONF_DSO_VDIVS / get_view_rect().height(); @@ -1509,19 +1510,15 @@ double DsoSignal::get_voltage(uint64_t index) QString DsoSignal::get_voltage(double v, int p, bool scaled) { - // if (_vDial == NULL) - // return ""; - - this->_hover_en = this->_hover_en; - if (_vDial == NULL){ assert(false); - } + } if (scaled) v = v * _vDial->get_value() * _vDial->get_factor() * DS_CONF_DSO_VDIVS / get_view_rect().height(); else v = v * _scale * _vDial->get_value() * _vDial->get_factor() * DS_CONF_DSO_VDIVS / get_view_rect().height(); + return abs(v) >= 1000 ? QString::number(v/1000.0, 'f', p) + "V" : QString::number(v, 'f', p) + "mV"; } diff --git a/DSView/pv/view/xcursor.cpp b/DSView/pv/view/xcursor.cpp index e4d6ea09..ca9e0c5c 100644 --- a/DSView/pv/view/xcursor.cpp +++ b/DSView/pv/view/xcursor.cpp @@ -25,6 +25,7 @@ #include "view.h" #include "ruler.h" #include "dsosignal.h" +#include "../log.h" #include @@ -162,6 +163,10 @@ void XCursor::paint(QPainter &p, const QRect &rect, XCur_type highlight, int or auto sig = _view.session().get_signal_by_index(_sig_index); if (sig != NULL){ _dsoSig = dynamic_cast(sig); + + if (_dsoSig != NULL){ + connect(_dsoSig, SIGNAL(sig_released(void*)), this, SLOT(on_signal_deleted(void*))); + } } }