This patch refactors some of the spacing control code to separate the concepts of distance-based and time-based (i.e. airbrush) spacing in a stroke, so that each can be updated independently of the other. It adds a checkbox in the Spacing option that, when checked, causes the distance-based spacing to be updated every 50 ms during a stroke instead of just when dabs are painted. For time-based spacing, similar updates happen every 50 ms if and only if the Airbrush option is enabled. (The time-based spacing updates for airbrushing were not made optional because airbrushing tends not to work very well without them, at least when the Rate curve option is enabled.)
Before the patch, both distance-based and time-based spacing would be updated between dabs when and only when airbrushing. With the patch, the updating of distance-based spacing can be configured independently of airbrushing.