input events: add event filter to improve capture
authorAndrew Chadwick <andrewc-git@piffle.org>
Sun, 20 Oct 2013 02:13:11 +0000 (03:13 +0100)
committerAndrew Chadwick <andrewc-git@piffle.org>
Sun, 20 Oct 2013 03:32:23 +0000 (04:32 +0100)
commit24e413cc251f825a44a2ba5ca4b59b7d60542e84
tree16ccaad20ab5b12513ef063addd9fecdeeee4a90
parent451ca93b8c2deb5ff2b88488608fc0ecfc531ed3
input events: add event filter to improve capture

Add an experimental GDK event filter to capture events before GDK itself
can motion-compress them and thus break our drawing accuracy. See

https://gna.org/bugs/?21003
https://gna.org/bugs/?20822
https://bugzilla.gnome.org/show_bug.cgi?id=702392

Good coding practice dictates that we don't try to do too much inside this
fairly horrid little hack, so we only queue the pointer position and the
timestamp. For all the events GDK 3.8+ drops on the floor during a frame
clock cycle (which the filter now captures), we use the tilt and pressure
info from the event on the event that did make it through. Interpolating
would be better.

Before: 50-60 events/second for all devices.
After: 200 events/second with an Intuos 5. 80 with a touchpad.

This hack only works on X11 platforms right now
gui/canvasevent.py
lib/eventhack.hpp [new file with mode: 0644]
lib/mypaintlib.hpp
lib/mypaintlib.i