GdkWindow: Fix shape handling for native windows

We don't track the full clip for each window anymore, as this
is not useful when no windows are opaque. However, we still
need the full clip for the shape, so its calculated manually.

However, it was previously only recalculated when the clip changes
which doesn't correctly handle the case of a sibling geometry changing.

So, instead of doing this directly when geometry changes we just
set a bit in the toplevel whenever some window geometry changes, and
we then handle this in process_updates, updating the shape for all
native windows. This should be ok performance-wise because we don't
expect a lot of native children.
This commit is contained in:
Alexander Larsson
2013-05-15 10:55:59 +02:00
parent 85645e4852
commit a60ccd3672
2 changed files with 35 additions and 24 deletions

View File

@ -226,6 +226,7 @@ struct _GdkWindow
guint viewable : 1; /* mapped and all parents mapped */
guint applied_shape : 1;
guint in_update : 1;
guint geometry_dirty : 1;
GdkFullscreenMode fullscreen_mode;
/* The GdkWindow that has the impl, ref:ed if another window.