[PATCH xserver 2/5] xwayland: Fix highest raw value on axis scaling

Kristian Høgsberg hoegsberg at gmail.com
Tue Nov 27 13:22:57 PST 2012


On Thu, Nov 22, 2012 at 08:22:57PM -0200, Tiago Vignatti wrote:
> Given xf86ScaleAxis(int Cx, int to_max, int to_min, int from_max, int
> from_min), if to_max goes from 0 to rows - 1, then from_max has to be entered
> accordingly to perform correct scaling. Check xf86ScaleAxis definition for
> details.
> 
> An easy way to reproduce the bug exposed, is to open an xterm with small
> letters and try to select one text character. You can see that the cursor
> pointer doesn't match precisely the character selection.
> 
> Signed-off-by: Tiago Vignatti <tiago.vignatti at intel.com>
> ---
>  hw/xfree86/xwayland/xwayland-input.c |    6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/xfree86/xwayland/xwayland-input.c b/hw/xfree86/xwayland/xwayland-input.c
> index 0c0838d..cff6d5e 100644
> --- a/hw/xfree86/xwayland/xwayland-input.c
> +++ b/hw/xfree86/xwayland/xwayland-input.c
> @@ -330,8 +330,10 @@ pointer_handle_motion(void *data, struct wl_pointer *pointer,
>      dx = xwl_seat->focus_window->window->drawable.x;
>      dy = xwl_seat->focus_window->window->drawable.y;
>  
> -    lx = xf86ScaleAxis(sx + dx, 0xFFFF, 0, xwl_screen->scrninfo->virtualX, 0);
> -    ly = xf86ScaleAxis(sy + dy, 0xFFFF, 0, xwl_screen->scrninfo->virtualY, 0);
> +    lx = xf86ScaleAxis(sx + dx, 0xFFFF, 0,
> +	               xwl_screen->scrninfo->virtualX - 1, 0);
> +    ly = xf86ScaleAxis(sy + dy, 0xFFFF, 0,
> +	               xwl_screen->scrninfo->virtualY - 1, 0);

I don't know why we're scaling the coordinates at all, we should just remove this.

Kristian

>      xf86PostMotionEvent(xwl_seat->pointer, TRUE, 0, 2, lx, ly);
>  }
> -- 
> 1.7.9.5
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list