rjvbb updated this revision to Diff 19073. rjvbb added a comment.
Following Breeze's example, we can defer the creation of a timer for the busy/indeterminate state to when we encounter one, i.e. when `Style::drawControl()` is called with `CE_ProgressBarContents`. Determining if the timer can be killed is a bit trickier of course (without changing considerably more), so I could do this: 1- start the timer if still necessary A- when an animated PB is shown for the 1st time (= as usual), but not when a non animated PB is shown. B- when an indeterminate PB is *drawn* for the 1st time 2- return to the idle frequency when there are no more visible animated PBs (= current proposed change) 3- kill the timer when all PBs are closed, destroyed or hidden Slight complication: Style::drawControl() is const, so one also has to move `m_timer`, `m_progressBarAnimateTimer` and `m_progressBarAnimateFps` to a private class, which in addition would have to have a `q` pointer and a startParentTimer() "proxy" so we can call Style::startTimer() from a const member function. For now I've only implemented this for Qt5, let me know if this is too much (complicated, or of a hack). CHANGES SINCE LAST UPDATE https://phabricator.kde.org/D7640?vs=19044&id=19073 REVISION DETAIL https://phabricator.kde.org/D7640 AFFECTED FILES qt4/style/qtcurve.cpp qt4/style/qtcurve.h qt5/style/qtcurve.cpp qt5/style/qtcurve.h qt5/style/qtcurve_api.cpp qt5/style/qtcurve_p.h To: rjvbb, yuyichao, #plasma Cc: davidedmundson, plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart, lukas