]> sigrok.org Git - pulseview.git/commitdiff
DecodeSignal: Adjust the DecodeChunkLength
authorSoeren Apel <redacted>
Sun, 21 May 2017 22:24:10 +0000 (00:24 +0200)
committerUwe Hermann <redacted>
Wed, 5 Jul 2017 22:37:08 +0000 (00:37 +0200)
The initial 4096 was too low, though it did make the UI
quite responsive. In 9cc264 it was increased to 10*1024*1024
to speed up decoding but that makes the UI stall very badly
under certain circumstances (e.g. when changing the baud rate
for UART by entering digits).
The reason is that every time a decoder property is changed,
the decode is restarted. Restarting the decode means that
the currently running processes need to shut down, so
they're told to do so and the GUI thread waits for them
to finish.
However, the srd_session_send() call is blocking, meaning
that libsrd will happily block the PV GUI thread until it's
done processing the current chunk of data.

For this reason, DecodeChunkLength can't be too high and
256*1024 looks like a reasonable compromise for now.

pv/data/decodesignal.cpp

index a2fe8f63f90f3e1e75c68fd9ff3c8cd524a0042a..5701aeb09b5eff7262d83b5336ba4d370cc91b4f 100644 (file)
@@ -46,7 +46,7 @@ namespace data {
 
 const double DecodeSignal::DecodeMargin = 1.0;
 const double DecodeSignal::DecodeThreshold = 0.2;
-const int64_t DecodeSignal::DecodeChunkLength = 10 * 1024 * 1024;
+const int64_t DecodeSignal::DecodeChunkLength = 256 * 1024;
 
 mutex DecodeSignal::global_srd_mutex_;