Yincognito wrote: ↑March 20th, 2023, 3:58 pm No, you're not, you're right that there are multiple factors (some of which you mentioned now) that influence performance in such a skin, and the effect is cummulative, as you can imagine.
I'm currently going back through the code and adding the deceleration and changing some of the UpdateDividers more appropriate for the measures. For me I only set the deceleration to 2, but that's because I have a larger step size for the RotateMeasure and 3 makes it noticeably "jumpy".Yincognito wrote: ↑March 20th, 2023, 8:21 pm The changes are not extensive, it's more about setting everything to update ONLY when it really needs to. As explained before by others here, big images updated / resized quickly are quite intensive in Rainmeter, so pretty much the only (classic) solution for the vinyl animation (which is the only one in this code you expect to animate smoothly, by the way) is to "decelerate" it via a suited update divider that produces acceptable movement AND performance. I set the related variable to 5 - which means 5 times slower than the skin update rate - and even though the rotation is slower, it's still noticeable and smooth enough if you don't look too closely. Feel free to change it to what you see fit.
[...]
Other than that, in your current / posted skin, properly handling the cover and vinyl rotations does not seem to be enough to improve performance, I set both their update dividers to -1 and even commented them both and I still have 60% CPU usage without HA. The latter helps, of course, but it's only passing the effort to the quicker GPU instead, not actually "fixing" the issue.
I'm about halfway through and the CPU usage (with HA on) reduced from about 8-ish% (I forgot to check what it was but I think it was around 8) to around 4. This may be redundant but just to be safe I added UpdateDivider=-1 to everything that does not need to be updated, even those without DynamicVariables=1. As far as I know, it doesn't hurt besides some more lines of code. One of the things I also did for example, is to stuff like MeasureSongArtist, MeasureShuffle and MeasureRepeat is make it so that it does an OnChangeAction that updates the relevant meters, which now have UpdateDivider=-1 rather than constantly updating. It works, but sometimes there's a noticeable delay, probably due to the lower update rate of the measure.