[PATCH libinput 02/24] evdev: use an axis_frame event to mark the end of axis changes

Peter Hutterer peter.hutterer at who-t.net
Sun Apr 27 22:01:47 PDT 2014


On Mon, Apr 21, 2014 at 07:11:11PM +0200, Carlos Garnacho wrote:
> It will be unlikely in this case to get both REL_WHEEL and REL_HWHEEL
> on a single EV_SYN, but for completeness.
> 
> Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
> ---
>  src/evdev.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/evdev.c b/src/evdev.c
> index 901b310..94fe67b 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -335,6 +335,7 @@ evdev_process_relative(struct evdev_device *device,
>  		       struct input_event *e, uint32_t time)
>  {
>  	struct libinput_device *base = &device->base;
> +	int need_frame = 0;
>  
>  	switch (e->code) {
>  	case REL_X:
> @@ -356,6 +357,7 @@ evdev_process_relative(struct evdev_device *device,
>  			time,
>  			LIBINPUT_POINTER_AXIS_VERTICAL_SCROLL,
>  			-1 * e->value * DEFAULT_AXIS_STEP_DISTANCE);
> +		need_frame = 1;
>  		break;
>  	case REL_HWHEEL:
>  		evdev_flush_pending_event(device, time);
> @@ -369,12 +371,16 @@ evdev_process_relative(struct evdev_device *device,
>  				time,
>  				LIBINPUT_POINTER_AXIS_HORIZONTAL_SCROLL,
>  				e->value * DEFAULT_AXIS_STEP_DISTANCE);
> +			need_frame = 1;
>  			break;
>  		default:
>  			break;
>  
>  		}
>  	}
> +
> +	if (need_frame)
> +		pointer_notify_axis_frame(base, time);

this actually makes it impossible to get both in the same AXIS_FRAME
sequence. Is this really intended?

Cheers,
   Peter


>  }
>  
>  static inline void
> -- 
> 1.9.0
 


More information about the wayland-devel mailing list