Comment 23 for bug 790130

Revision history for this message
PeterKnaggs (peter-knaggs) wrote :

Debugged a bit further: seems that what's happening is that the
call to gdk_event_get_axis around line 308 of dyna-draw-context.cpp

static void
sp_dyna_draw_extinput(SPDynaDrawContext *dc, GdkEvent *event)
{
    if (gdk_event_get_axis (event, GDK_AXIS_PRESSURE, &dc->pressure))
        dc->pressure = CLAMP (dc->pressure, DDC_MIN_PRESSURE, DDC_MAX_PRESSURE);
    else
        dc->pressure = DDC_DEFAULT_PRESSURE;

isn't finding the GDK_AXIS_PRESSURE axis any more,
after Inkscape switches to the "Inkscape default" palette.

The gdk_event_get_axis documentation doesn't give much hints on
why an axis would suddenly no longer be found, so I guess something
got clobbered somewhere when Inkscape switched palettes.

http://developer.gnome.org/gdk/stable/gdk-Events.html#gdk-event-get-axis

But anyways, with a bit more time I might be able to track down which bit
of code is doing the clobbering, it's probably somewhere in ui/dialog/swatches.cpp
when it loads these special (larger?) kinds of palettes, but anyways at least we can
provide the developers a more useful bug report, by explaining that if they put a
breakpoint on the line 311 of dyna-draw-context.cpp,
  dc->pressure = DDC_DEFAULT_PRESSURE;
on a system where we know pen pressure is working properly, then that
breakpoint should NEVER trigger. But it does!

The Inkscape code seems a little bit too trusting of the gdk_event_get_axis result:
it hardly makes much sense for the GDK_AXIS_PRESSURE axis to be found OK earlier,
then have it suddenly "vanish". I guess there should be some kind of popup message
telling the user something like "Your device has mysteriously stopped providing any
pen pressure information. Please check the gdk_event_get_axis call is working properly."