On Mon, Jun 4, 2012 at 8:49 AM, Pekka Paalanen <[email protected]> wrote:
> The function declaration had different parameter types than the function > definition. The compiler did not warn about that, because wl_fixed_t > used to be typedef'd to int32_t, so with that substitution they were > equal. > > Fix the declaration and definition to match. > > Also, convert wl_fixed_t directly into floats, to avoid truncation. > > Signed-off-by: Pekka Paalanen <[email protected]> > --- > src/compositor.c | 14 +++++++------- > src/compositor.h | 2 +- > 2 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/src/compositor.c b/src/compositor.c > index 797ab99..882e081 100644 > --- a/src/compositor.c > +++ b/src/compositor.c > @@ -2755,24 +2755,24 @@ weston_text_cursor_position_notify(struct > weston_surface *surface, > > WL_EXPORT void > weston_output_update_zoom(struct weston_output *output, > - wl_fixed_t fx, > - wl_fixed_t fy, > + wl_fixed_t x, > + wl_fixed_t y, > uint32_t type) > { > - int32_t x, y; > + float global_x, global_y; > float trans_min, trans_max; > > if (output->zoom.level >= 1.0) > return; > > - x = wl_fixed_to_int(fx); > - y = wl_fixed_to_int(fy); > + global_x = wl_fixed_to_double(x); > + global_y = wl_fixed_to_double(y); > > output->zoom.trans_x = > - (((float)(x - output->x) / output->current->width) * > + (((global_x - output->x) / output->current->width) * > (output->zoom.level * 2)) - output->zoom.level; > output->zoom.trans_y = > - (((float)(y - output->y) / output->current->height) * > + (((global_y - output->y) / output->current->height) * > (output->zoom.level * 2)) - output->zoom.level; > > if (type == ZOOM_TEXT_CURSOR) { > diff --git a/src/compositor.h b/src/compositor.h > index 836f10a..21899d4 100644 > --- a/src/compositor.h > +++ b/src/compositor.h > @@ -632,7 +632,7 @@ void > weston_compositor_shutdown(struct weston_compositor *ec); > void > weston_output_update_zoom(struct weston_output *output, > - int x, int y, uint32_t > type); > + wl_fixed_t x, wl_fixed_t y, uint32_t type); > void > weston_text_cursor_position_notify(struct weston_surface *surface, int x, > int y); > void > -- > 1.7.3.4 > > Hi Pekka, thanks for your attention here. The first part of this patch fixes a problem I wasn't sure about, where the zoomed position 'jumps around' a bit. It's most noticeable while zoomed in a significant amount and typing into a rotated weston-terminal. The latter part has already been fixed by http://cgit.freedesktop.org/wayland/weston/commit/?id=ae71220fc9fbb9b43af4fcf8f3f57305ffcd9110 Thanks, Scott
_______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
