[RFC] damage dealing rework

Pekka Paalanen ppaalanen at gmail.com
Fri Feb 10 07:21:23 PST 2012


Hi Kristian,

here is most of what we talked about the other day, about moving damage
calls into weston_surface_update_transform(). I also took Tiago's "misc
cleanup" patch set, since it needed rebasing after these changes.

I haven't tested this much, so now it's just an RFC, but you could also
pull it.

The major point of this patch series is that it fixes the
surface transformations vs. damage handling. Previously only
weston_compositor_configure() got that right, and all transformations
worked by luck or by overkill.

The things I seem to have forgotten:

- round off fractions from geometry.x,y when we return to
  non-transformed surface state

- checking notify_motion

I also noticed that shell.c map(), as big and hairy as it is, also has a
bug. If you trigger a popup type surface while locked, the surface will
have output set, but added to the hidden surface list. Soon after, the
compositor likely crashes. The bug was there even before.

The way to trigger that is to open the window titlebar context menu of
the unlock dialog. Hrrrrm, what would happen if I could choose "close"
from that...


The following changes since commit 6f82cf5dc5366fd903a1c04218bb910b1c0c3950:

  configure: Fix build on debian by avoiding bashisms in the test command. (2012-02-09 14:17:54 -0500)

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

Pekka Paalanen (12):
      shell: remove excessive damage from rotating
      compositor: split weston_surface_damage_below()
      compositor: split weston_surface_update_transform()
      compositor: move surface_to_global_float() definition
      compositor: use floats in computing bounding box
      compositor: simplify weston_surface_damage_rectangle()
      compositor: let update_transform deal damage
      compositor: clarify update_transform vs. repaint
      compositor: move opaque tracking into transform
      compositor: move output assignment to update_transform
      shell: replace identity calls to weston_surface_configure()
      shell: remove two redundant statements from map()

Tiago Vignatti (5):
      window: explicitly set TYPE_TOPLEVEL for new windows
      window: simplify a bit widget_set_size and widget_set_allocation
      clients: fix spelling
      shell: remove duplicated code
      compositor: make functions static

 clients/cairo-util.c |   16 ++--
 clients/gears.c      |    2 +-
 clients/window.c     |    6 +-
 src/compositor.c     |  253 ++++++++++++++++++++++++++++----------------------
 src/compositor.h     |   16 +---
 src/shell.c          |   50 +++--------
 src/tablet-shell.c   |    1 +
 7 files changed, 166 insertions(+), 178 deletions(-)


Thanks,
pq


More information about the wayland-devel mailing list