Add gimppainttool-paint.[ch], which takes care of painting during motion events in GimpPaintTool. Perform the actual painting in a separate thread, so that display updates, which can have a significant synchronization overhead, don't stall painting.
Allow specific paint tools to opt-out of a separate paint thread, and avoid it in GimpMybrushTool, since it doesn't seem to work.
The separate paint thread can be explicitly disabled by setting the GIMP_NO_PAINT_THREAD environment variable.
8e7a34297f app: move painting to a separate thread
app/tools/Makefile.am | 2 +
app/tools/gimpmybrushtool.c | 5 +-
app/tools/gimppainttool-paint.c | 312 ++++++++++++++++++++++++++++++++++++++++
app/tools/gimppainttool-paint.h | 30 ++++
app/tools/gimppainttool.c | 19 +--
app/tools/gimppainttool.h | 2 +
6 files changed, 359 insertions(+), 11 deletions(-)