compositor: implement a stack of surface transformations
authorPekka Paalanen <ppaalanen@gmail.com>
Fri, 6 Jan 2012 12:10:06 +0000 (14:10 +0200)
committerPekka Paalanen <ppaalanen@gmail.com>
Fri, 27 Jan 2012 08:43:49 +0000 (10:43 +0200)
commitc61eca6002854b81ad8a418ae82a074423cea80b
tree1cda0356b5da8bd7ac83427bba33d04f5882a8e8
parent804e05185b65b3ccff59586be916c8ff6acf3b4f
compositor: implement a stack of surface transformations

Having at most one transformation object attached to a surface is not
enough anymore. If we have a surface that needs to be scaled to
fullscreen, and then we have the zoom animation, we already need two
transformations combined.

Implement support for multiple transformations by adding a transformation
list. The final transformation is the ordered composite of those in the
list. To avoid traversing the list every single time, add a dirty flag,
and cache the final transformation.

The existing transformation users (only zoom) are converted.

Note: surface drawing should honour all kinds of transformations, but
not damage region code nor input event translating code take
transformations into account, AFAICT. Therefore anything but translation
will probably behave badly until they are fixed.

Cc: Juan Zhao <juan.j.zhao@linux.intel.com>
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
src/compositor.c
src/compositor.h
src/util.c