]> sigrok.org Git - pulseview.git/commit
Rework signaling mechanism for trace repainting
authorSoeren Apel <redacted>
Fri, 26 May 2017 14:19:56 +0000 (16:19 +0200)
committerSoeren Apel <redacted>
Fri, 26 May 2017 17:36:04 +0000 (19:36 +0200)
commit5ed05b699e5367bae21828f533e3d169b9bab348
tree8cbf479ecabada23dcdee848ea881ed3324a1fb5
parent17c7f31c7bb674d5017a8de66a5816e34542abb8
Rework signaling mechanism for trace repainting

Before, analog traces would request a repaint of the entire
view when they receive data. To understand how bad this was,
consider 4 enabled analog channels during capture. Every time
one channel would receive a bunch of sample data, it would
force a repaint of the view, resulting in 4 unnecessary
repaints.

To fix this, the analog traces no longer request a repaint
on incoming sample data. Instead, the mechanism now is such
that the view "collates" repaint requests from all used
signalbases by means of a one-shot timer, i.e. any repaint
request is ignored if the timer is already running.

With the timer, we can also establish an upper bound on
how often the trace should update at most, currently 25Hz.

Since this functionality is very useful for any kind of
view, the existing one-shot timer was moved to the ViewBase
and then extended as explained.
pv/view/analogsignal.cpp
pv/view/trace.cpp
pv/view/trace.hpp
pv/view/view.cpp
pv/view/view.hpp
pv/views/viewbase.cpp
pv/views/viewbase.hpp