[PATCH libinput 2/6] touchpad: Fix sending of scroll stop events
Hans de Goede
hdegoede at redhat.com
Sun May 25 23:33:31 PDT 2014
Hi,
On 05/25/2014 02:13 PM, Jonas Ådahl wrote:
> On Fri, May 23, 2014 at 04:06:23PM +0200, Hans de Goede wrote:
>> Setting tp->scroll.direction = 0 before checking tp->scroll.direction
>> to see if we need to send stop scroll events for vert / horz scrolling does
>> not really work well.
>>
>> Also we need to check direction with an axis mask, not the axis number.
>>
>> While at it also add a tp_stop_scroll_events() helper function for this.
>>
>> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
>> ---
>> src/evdev-mt-touchpad.c | 39 +++++++++++++++++++++++----------------
>> 1 file changed, 23 insertions(+), 16 deletions(-)
>>
>> diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
>> index 040939b..2455c36 100644
>> --- a/src/evdev-mt-touchpad.c
>> +++ b/src/evdev-mt-touchpad.c
>> @@ -500,6 +500,28 @@ tp_post_twofinger_scroll(struct tp_dispatch *tp, uint64_t time)
>> }
>> }
>>
>> +static void
>> +tp_stop_scroll_events(struct tp_dispatch *tp, uint64_t time)
>> +{
>> + if (tp->scroll.state == SCROLL_STATE_NONE)
>> + return;
>> +
>> + /* terminate scrolling with a zero scroll event */
>> + if (tp->scroll.direction & (1 << LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL))
>> + pointer_notify_axis(&tp->device->base,
>> + time,
>> + LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL,
>> + 0);
>> + if (tp->scroll.direction & (1 << LIBINPUT_POINTER_AXIS_HORIZONTAL_SCROLL))
>> + pointer_notify_axis(&tp->device->base,
>> + time,
>> + LIBINPUT_POINTER_AXIS_HORIZONTAL_SCROLL,
>> + 0);
>
> I can see that you didn't introduce sending 0-valued axis events in this
> patch, but why do we do so? weston will ignore it anyway, and if it
> wouldn't or other compositor wouldn't, it might confuse clients assuming
> that a scroll event will always have a direction.
Another one where I'm going to let the answer up to Peter I'm afraid.
Regards,
Hans
More information about the wayland-devel
mailing list