[PULL] Surface transformation fixes 1

Pekka Paalanen ppaalanen at gmail.com
Tue Jan 31 06:01:39 PST 2012

On Fri, 27 Jan 2012 17:07:16 +0200
Pekka Paalanen <ppaalanen at gmail.com> wrote:

> Hi Kristian, and everyone,
> To stress test the surface transformations, Weston now has a debug
> feature: if you press Super+Alt and left-drag a surface with a mouse,
> it rotates. This is just a debug feature, and has some rough edges.
> For testing input coordinate transformations, there is a new demo
> application called clickdot. It simply shows a cross where you clicked,
> and it should match the mouse cursor hotspot.
> The major contribution of this series is cleaning up the coordinate
> systems and making coordinate transformations explicit.
> Things known broken:
> - Transforming surfaces with opaque regions usually results in some
>   misrendering. In practice this concerns rotated RGB surfaces (as
>   opposed to RGBA).
> - move and resize orientation for rotated surfaces is wrong
> - related surfaces, e.g. menus, are not transformed
> - cursors are not transformed
> I intend to continue fixing the remaining issues, at least opaques and
> move & resize.

This fixes most of the move and resize issues.

However, we are now cumulating rounding errors on continuous resizes.
To see it yourself, take a window, rotate it a little, and start
resizing from the top-left corner. As you spin the mouse, the surface
wanders off.

I have an idea how to fix that, but it is a bit invasive. Basically,
store the surface-local translation in integers separately from the
global translation. That way there are no cumulating rounding errors.

The following changes since commit becfcbfbd29de1a59ae4c7c272bdad4fc1023a15:

  test: Fix out-of-tree builds (2012-01-30 19:17:52 -0500)

are available in the git repository at:
  git://git.collabora.co.uk/git/user/pq/wayland-demos.git transform-fixes1

Pekka Paalanen (3):
      shell: fix move of transformed surfaces
      shell: fix resize for transformed surfaces
      compositor: handle attach request in surface-local coordinates

 src/compositor.c |   16 +++++++++++-----
 src/shell.c      |   52 ++++++++++++++++++++++++++--------------------------
 2 files changed, 37 insertions(+), 31 deletions(-)


More information about the wayland-devel mailing list