I think putting this here is just rate-limiting to the peak hold countdown. It still re-draws if nothing changed.

What you probably want is in the paint-event -- record the last idx and the last peak in member state and then in onConnectedControlChanged, compare the new idx and new peak with the last drawn idx and peak. If they are different -> mark as dirty / unpainted.