[PATCH RFC weston] libinput: support high-resolution scroll wheels
Pekka Paalanen
ppaalanen at gmail.com
Wed Jan 30 09:31:22 UTC 2019
On Wed, 30 Jan 2019 09:47:39 +1000
Peter Hutterer <peter.hutterer at who-t.net> wrote:
> On Tue, Jan 29, 2019 at 03:36:41PM +0200, Pekka Paalanen wrote:
> > On Tue, 29 Jan 2019 16:57:34 +1000
> > Peter Hutterer <peter.hutterer at who-t.net> wrote:
> >
> > > The new API returns scroll wheels as fractions of 120.
> > >
> > > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > > ---
> > > Turns out it's not the most complicated patch...
> > >
> > > This is an RFC only because libinput hasn't been released yet, and it's
> > > waiting on the kernel release anyway. Given the expected delay, I hope
> > > autotools is removed by the time this becomes a mergeable.
> > >
> > > libweston/libinput-device.c | 6 ++++++
> > > meson.build | 9 +++++++++
> > > 2 files changed, 15 insertions(+)
> > >
> > > diff --git a/libweston/libinput-device.c b/libweston/libinput-device.c
> > > index e25df144..e028d246 100644
> > > --- a/libweston/libinput-device.c
> > > +++ b/libweston/libinput-device.c
> > > @@ -190,9 +190,15 @@ normalize_scroll(struct libinput_event_pointer *pointer_event,
> > > */
> > > switch (source) {
> > > case LIBINPUT_POINTER_AXIS_SOURCE_WHEEL:
> > > +#if HAVE_LIBINPUT_AXIS_V120
> > > + value = 10 * libinput_event_pointer_get_axis_value_v120(
> > > + pointer_event,
> > > + axis)/120.0;
> >
> > Hi Peter,
> >
> > spaces needed around the operator.
>
> thx, and I will submit a MR proper anyway, this was just a FYI patch to
> illustrate the world probably won't end if we add hi-res scrolling.
>
> > > +#else
> > > value = 10 * libinput_event_pointer_get_axis_value_discrete(
> > > pointer_event,
> > > axis);
> > > +#endif
> > > break;
> > > case LIBINPUT_POINTER_AXIS_SOURCE_FINGER:
> > > case LIBINPUT_POINTER_AXIS_SOURCE_CONTINUOUS:
> > > diff --git a/meson.build b/meson.build
> > > index 7826dbb0..dfb10ce5 100644
> > > --- a/meson.build
> > > +++ b/meson.build
> > > @@ -143,6 +143,15 @@ dep_wayland_server = dependency('wayland-server', version: '>= 1.12.0')
> > > dep_wayland_client = dependency('wayland-client', version: '>= 1.12.0')
> > > dep_pixman = dependency('pixman-1', version: '>= 0.25.2')
> > > dep_libinput = dependency('libinput', version: '>= 0.8.0')
> > > +have_libinput_axis_v120_code = '''
> > > +#include <libinput.h>
> > > +int main(void) { libinput_event_pointer_get_axis_value_v120(NULL, 0); }
> > > +'''
> > > +have_libinput_axis_v120 = cc.links(have_libinput_axis_v120_code,
> > > + name: 'libinput_event_pointer_get_axis_value_v120',
> > > + dependencies: dep_libinput)
> >
> > I guess the above gets replaced with a version check after libinput is
> > released?
>
> I found the direct function check works just as well and has the benefit of
> working with pre-releases (or patched versions) where needed. Esp. because
> here we just look for a single API call here. Do you have a preference?
Hi Peter,
maybe simply hard-require the new libinput release and don't even
bother with the #define below? But I suppose that could be inconvenient
for some.
Since it's just one function, I suppose I don't mind that much. The
version check would be much simpler in meson though.
Oh, you should probably use cc.has_function() instead of that
hand-written thing, that would help.
Thanks,
pq
> > > +config_h.set10('HAVE_LIBINPUT_AXIS_V120', have_libinput_axis_v120)
> > > +
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20190130/212b90ba/attachment.sig>
More information about the wayland-devel
mailing list