```
These changes aims to improve stabilizer timing and visual feedback:
- Use `Qt::PreciseTimer` for stabilizer event sampling.
- Perform delayed paint during `KisToolFreehandHelper::paint` (pointer event) instead of using a timer.
- Don't call `requestExplicitUpdateOutline` within `KisStabilizerDelayedPaintHelper`.
```
Moved the paint code to be called during ``KisToolFreehandHelper::paint`` since this is how it's done for other smoothing methods and no smoothing. This shouldn't perform any worse than those. Removing the timer event dispatching might've caused some improvement too, but I haven't profiled for that.
~~I kept the delayed paint timer running for whenever the pointer events get spaced too far in time. But I am tempted to just remove the timer completely (and also `stabilizerDelayedPaintInterval` config) because it doesn't seem to be something that would happen, other than the system being under load which would likely prevent the canvas from being redrawn anyway.~~ I removed the delayed paint timer, but I haven't yet changed the config options, will do that later. I am thinking of making a boolean option to toggle the delayed paint helper and make it enabled on all platforms by default. As for now, set `stabilizerDelayedPaintInterval` to be less than `stabilizerSampleSize` to enable delayed paint, and the other way round to disable it.
Calling `requestExplicitUpdateOutline` is not needed anymore. ~~Actually it might not even be needed before these changes?~~ (It was needed because a delayed paint timer trigger can be after a pointer event, and not calling it would cause the outline to detach from the cursor if using a mouse.)
Regarding the stabilizer event sampling timer, please see T6440#100143. You can change line 681 of `kis_tool_freehand_helper.cpp` between `Qt::PreciseTimer` and `Qt::CoarseTimer` to test the effect.