compositor: q&d solution for surface drift
authorPekka Paalanen <ppaalanen@gmail.com>
Mon, 6 Feb 2012 12:54:20 +0000 (14:54 +0200)
committerPekka Paalanen <ppaalanen@gmail.com>
Mon, 6 Feb 2012 12:54:20 +0000 (14:54 +0200)
commitddae03cf9bd0012b96be834a3e4797dfe2f1be6f
treef21e430d13b5be5d3ec225b15a92b1e206afbb49
parentc7b45f68e629dd5f92f10411f97bfa862a7baf5e
compositor: q&d solution for surface drift

When a transformed (rotated) surface is continuously resized from its
top-left corner, its location will drift. This is due to accumulating
rounding errors in transforming an offset from surface-local to global
coordinates in surface_attach().

Diminish the drift down to unobservable level by changing the
weston_surface global position from integer to float.

The offset transformation is now done without rounding. To preserve the
precision, wl_shell::configure() interface must use floats, and so does
weston_surface_configure(), too.

The con of this patch is that it adds inconsistency to the surface
position coordinates: sometimes they are floats, sometimes integers.
src/compositor.c
src/compositor.h
src/shell.c
src/tablet-shell.c