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