diff options
author | q234rty | 2022-10-29 18:41:37 +0800 |
---|---|---|
committer | q234rty | 2022-10-29 18:41:37 +0800 |
commit | 3eace3523206e06ca14de750e16ae6041ad09441 (patch) | |
tree | 5ca932ecc0fa8432efd3921217d9a225101487ef | |
parent | 5cb85908fc84e2981b3773bf743af143f1e442c2 (diff) | |
download | aur-3eace3523206e06ca14de750e16ae6041ad09441.tar.gz |
Sync with extra
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | 0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch | 237 | ||||
-rw-r--r-- | PKGBUILD | 9 |
3 files changed, 246 insertions, 4 deletions
@@ -1,7 +1,7 @@ pkgbase = xorg-xwayland-hidpi-xprop pkgdesc = run X clients under wayland, with !733 HiDPI patch pkgver = 22.1.4 - pkgrel = 1 + pkgrel = 2 url = https://xorg.freedesktop.org arch = x86_64 license = custom @@ -35,10 +35,12 @@ pkgbase = xorg-xwayland-hidpi-xprop source = https://xorg.freedesktop.org/archive/individual/xserver/xwayland-22.1.4.tar.xz.sig source = hidpi.patch source = 0001_Do_not_ignore_leave_events.patch::https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/987.patch + source = 0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch::https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/988.patch validpgpkeys = 67DC86F2623FC5FD4BB5225D14706DBE1E4B4540 sha512sums = a1301df1687ac276172565c98b1fb3d5f35f67d47f625b81fce485d1818cf4896f88c2750b4e93596fa6f7fd515e258d201ca3d0cc39943b576f2d2c3f9be8cd sha512sums = SKIP sha512sums = 7132c44d9bbf1c5f93906ef301a6e946f0909da0b9273f397281e681ad0da77d62b960a9dd0a640c7209548192fefba9bde03c493f3a89d08cd73a12844bb518 sha512sums = d0c87face4485050db134e5ed14d930bdae05d81149b2b573b97fc6dd96d9234e709d6f0523221747293da20cbd012e1e1da00e12b227f98597ffa320bcd3e3c + sha512sums = fea7abdd962fd0a8e653069f7926508d2dd90a0a6632d4aae2265a221267f1777fba4aeaaf494dc6f3e4a11a15a7eabd524ca16f948e0d3fee05c6a4b8a69fd4 pkgname = xorg-xwayland-hidpi-xprop diff --git a/0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch b/0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch new file mode 100644 index 000000000000..d5433960c9bd --- /dev/null +++ b/0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch @@ -0,0 +1,237 @@ +From eca138fff0f2344fdf02f6749f6b4c900fb52357 Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan <ofourdan@redhat.com> +Date: Fri, 28 Oct 2022 11:08:16 +0200 +Subject: [PATCH] Revert "xwayland: Aggregate scroll axis events to fix kinetic + scrolling" + +This reverts commit 2db46363542bfd0f62f20f5a898fef07424ffccc. + +Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1392 +--- + hw/xwayland/xwayland-input.c | 116 +++++++++++++++-------------------- + hw/xwayland/xwayland-input.h | 10 +-- + 2 files changed, 51 insertions(+), 75 deletions(-) + +diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c +index aa08586bc..ec40d110c 100644 +--- a/hw/xwayland/xwayland-input.c ++++ b/hw/xwayland/xwayland-input.c +@@ -50,6 +50,12 @@ + #include "pointer-gestures-unstable-v1-client-protocol.h" + #include "xwayland-keyboard-grab-unstable-v1-client-protocol.h" + ++struct axis_discrete_pending { ++ struct xorg_list l; ++ uint32_t axis; ++ int32_t discrete; ++}; ++ + struct sync_pending { + struct xorg_list l; + DeviceIntPtr pending_dev; +@@ -607,36 +613,6 @@ dispatch_relative_motion(struct xwl_seat *xwl_seat) + POINTER_RAWONLY, &mask); + } + +-static void +-dispatch_scroll_motion(struct xwl_seat *xwl_seat) +-{ +- ValuatorMask mask; +- const int divisor = 10; +- wl_fixed_t dy = xwl_seat->pending_pointer_event.scroll_dy; +- wl_fixed_t dx = xwl_seat->pending_pointer_event.scroll_dx; +- int32_t discrete_dy = xwl_seat->pending_pointer_event.scroll_discrete_dy; +- int32_t discrete_dx = xwl_seat->pending_pointer_event.scroll_discrete_dx; +- +- valuator_mask_zero(&mask); +- if (xwl_seat->pending_pointer_event.has_vertical_scroll) +- valuator_mask_set_double(&mask, +- 3, +- wl_fixed_to_double(dy) / divisor); +- else if (xwl_seat->pending_pointer_event.has_vertical_scroll_discrete) +- valuator_mask_set(&mask, 3, discrete_dy); +- +- if (xwl_seat->pending_pointer_event.has_horizontal_scroll) +- valuator_mask_set_double(&mask, +- 2, +- wl_fixed_to_double(dx) / divisor); +- else if (xwl_seat->pending_pointer_event.has_horizontal_scroll_discrete) +- valuator_mask_set(&mask, 2, discrete_dx); +- +- QueuePointerEvents(get_pointer_device(xwl_seat), +- MotionNotify, 0, POINTER_RELATIVE, &mask); +-} +- +- + static void + dispatch_pointer_motion_event(struct xwl_seat *xwl_seat) + { +@@ -653,18 +629,8 @@ dispatch_pointer_motion_event(struct xwl_seat *xwl_seat) + dispatch_absolute_motion(xwl_seat); + } + +- if (xwl_seat->pending_pointer_event.has_vertical_scroll || +- xwl_seat->pending_pointer_event.has_horizontal_scroll || +- xwl_seat->pending_pointer_event.has_vertical_scroll_discrete || +- xwl_seat->pending_pointer_event.has_horizontal_scroll_discrete) +- dispatch_scroll_motion(xwl_seat); +- + xwl_seat->pending_pointer_event.has_absolute = FALSE; + xwl_seat->pending_pointer_event.has_relative = FALSE; +- xwl_seat->pending_pointer_event.has_vertical_scroll = FALSE; +- xwl_seat->pending_pointer_event.has_horizontal_scroll = FALSE; +- xwl_seat->pending_pointer_event.has_vertical_scroll_discrete = FALSE; +- xwl_seat->pending_pointer_event.has_horizontal_scroll_discrete = FALSE; + } + + static void +@@ -721,17 +687,42 @@ pointer_handle_axis(void *data, struct wl_pointer *pointer, + uint32_t time, uint32_t axis, wl_fixed_t value) + { + struct xwl_seat *xwl_seat = data; ++ int index; ++ const int divisor = 10; ++ ValuatorMask mask; ++ struct axis_discrete_pending *pending = NULL; ++ struct axis_discrete_pending *iter; + + switch (axis) { + case WL_POINTER_AXIS_VERTICAL_SCROLL: +- xwl_seat->pending_pointer_event.has_vertical_scroll = TRUE; +- xwl_seat->pending_pointer_event.scroll_dy = value; ++ index = 3; + break; + case WL_POINTER_AXIS_HORIZONTAL_SCROLL: +- xwl_seat->pending_pointer_event.has_horizontal_scroll = TRUE; +- xwl_seat->pending_pointer_event.scroll_dx = value; ++ index = 2; + break; ++ default: ++ return; ++ } ++ ++ xorg_list_for_each_entry(iter, &xwl_seat->axis_discrete_pending, l) { ++ if (iter->axis == axis) { ++ pending = iter; ++ break; ++ } + } ++ ++ valuator_mask_zero(&mask); ++ ++ if (pending) { ++ valuator_mask_set(&mask, index, pending->discrete); ++ xorg_list_del(&pending->l); ++ free(pending); ++ } else { ++ valuator_mask_set_double(&mask, index, wl_fixed_to_double(value) / divisor); ++ } ++ ++ QueuePointerEvents(get_pointer_device(xwl_seat), ++ MotionNotify, 0, POINTER_RELATIVE, &mask); + } + + static void +@@ -754,18 +745,6 @@ static void + pointer_handle_axis_stop(void *data, struct wl_pointer *wl_pointer, + uint32_t time, uint32_t axis) + { +- struct xwl_seat *xwl_seat = data; +- +- switch (axis) { +- case WL_POINTER_AXIS_VERTICAL_SCROLL: +- xwl_seat->pending_pointer_event.has_vertical_scroll = TRUE; +- xwl_seat->pending_pointer_event.scroll_dy = 0; +- break; +- case WL_POINTER_AXIS_HORIZONTAL_SCROLL: +- xwl_seat->pending_pointer_event.has_horizontal_scroll = TRUE; +- xwl_seat->pending_pointer_event.scroll_dx = 0; +- break; +- } + } + + static void +@@ -774,16 +753,14 @@ pointer_handle_axis_discrete(void *data, struct wl_pointer *wl_pointer, + { + struct xwl_seat *xwl_seat = data; + +- switch (axis) { +- case WL_POINTER_AXIS_VERTICAL_SCROLL: +- xwl_seat->pending_pointer_event.has_vertical_scroll_discrete = TRUE; +- xwl_seat->pending_pointer_event.scroll_discrete_dy = discrete; +- break; +- case WL_POINTER_AXIS_HORIZONTAL_SCROLL: +- xwl_seat->pending_pointer_event.has_horizontal_scroll_discrete = TRUE; +- xwl_seat->pending_pointer_event.scroll_discrete_dx = discrete; +- break; +- } ++ struct axis_discrete_pending *pending = malloc(sizeof *pending); ++ if (!pending) ++ return; ++ ++ pending->axis = axis; ++ pending->discrete = discrete; ++ ++ xorg_list_add(&pending->l, &xwl_seat->axis_discrete_pending); + } + + static const struct wl_pointer_listener pointer_listener = { +@@ -1759,6 +1736,7 @@ create_input_device(struct xwl_screen *xwl_screen, uint32_t id, uint32_t version + wl_array_init(&xwl_seat->keys); + + xorg_list_init(&xwl_seat->touches); ++ xorg_list_init(&xwl_seat->axis_discrete_pending); + xorg_list_init(&xwl_seat->sync_pending); + } + +@@ -1767,6 +1745,7 @@ xwl_seat_destroy(struct xwl_seat *xwl_seat) + { + struct xwl_touch *xwl_touch, *next_xwl_touch; + struct sync_pending *p, *npd; ++ struct axis_discrete_pending *ad, *ad_next; + + xorg_list_for_each_entry_safe(xwl_touch, next_xwl_touch, + &xwl_seat->touches, link_touch) { +@@ -1779,6 +1758,11 @@ xwl_seat_destroy(struct xwl_seat *xwl_seat) + free (p); + } + ++ xorg_list_for_each_entry_safe(ad, ad_next, &xwl_seat->axis_discrete_pending, l) { ++ xorg_list_del(&ad->l); ++ free(ad); ++ } ++ + release_tablet_manager_seat(xwl_seat); + + release_grab(xwl_seat); +diff --git a/hw/xwayland/xwayland-input.h b/hw/xwayland/xwayland-input.h +index 4fd175b13..dbe215bdb 100644 +--- a/hw/xwayland/xwayland-input.h ++++ b/hw/xwayland/xwayland-input.h +@@ -93,6 +93,7 @@ struct xwl_seat { + char *keymap; + struct wl_surface *keyboard_focus; + ++ struct xorg_list axis_discrete_pending; + struct xorg_list sync_pending; + + struct xwl_pointer_warp_emulator *pointer_warp_emulator; +@@ -110,15 +111,6 @@ struct xwl_seat { + double dy; + double dx_unaccel; + double dy_unaccel; +- +- wl_fixed_t scroll_dy; +- wl_fixed_t scroll_dx; +- int32_t scroll_discrete_dy; +- int32_t scroll_discrete_dx; +- Bool has_vertical_scroll; +- Bool has_horizontal_scroll; +- Bool has_vertical_scroll_discrete; +- Bool has_horizontal_scroll_discrete; + } pending_pointer_event; + + struct xorg_list tablets; +-- +GitLab + @@ -4,7 +4,7 @@ pkgname=xorg-xwayland-hidpi-xprop pkgver=22.1.4 -pkgrel=1 +pkgrel=2 arch=('x86_64') license=('custom') url="https://xorg.freedesktop.org" @@ -19,11 +19,13 @@ makedepends=('meson' 'xorgproto' 'xtrans' 'libxkbfile' 'dbus' 'egl-wayland' ) source=(https://xorg.freedesktop.org/archive/individual/xserver/xwayland-$pkgver.tar.xz{,.sig} hidpi.patch - 0001_Do_not_ignore_leave_events.patch::https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/987.patch ) + 0001_Do_not_ignore_leave_events.patch::https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/987.patch + 0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch::https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/988.patch) sha512sums=('a1301df1687ac276172565c98b1fb3d5f35f67d47f625b81fce485d1818cf4896f88c2750b4e93596fa6f7fd515e258d201ca3d0cc39943b576f2d2c3f9be8cd' 'SKIP' '7132c44d9bbf1c5f93906ef301a6e946f0909da0b9273f397281e681ad0da77d62b960a9dd0a640c7209548192fefba9bde03c493f3a89d08cd73a12844bb518' - 'd0c87face4485050db134e5ed14d930bdae05d81149b2b573b97fc6dd96d9234e709d6f0523221747293da20cbd012e1e1da00e12b227f98597ffa320bcd3e3c') + 'd0c87face4485050db134e5ed14d930bdae05d81149b2b573b97fc6dd96d9234e709d6f0523221747293da20cbd012e1e1da00e12b227f98597ffa320bcd3e3c' + 'fea7abdd962fd0a8e653069f7926508d2dd90a0a6632d4aae2265a221267f1777fba4aeaaf494dc6f3e4a11a15a7eabd524ca16f948e0d3fee05c6a4b8a69fd4') provides=('xorg-server-xwayland' 'xorg-xwayland') conflicts=('xorg-server-xwayland' 'xorg-xwayland') replaces=('xorg-server-xwayland') @@ -34,6 +36,7 @@ options=('debug' 'strip') prepare() { cd ${srcdir}/xwayland-$pkgver patch -Np1 -i ../0001_Do_not_ignore_leave_events.patch + patch -Np1 -i ../0002_Revert_Aggregate_scroll_axis_events_to_fix_kinetic_scrolling.patch patch -Np1 -i ../hidpi.patch } |