Allow potentially supporting multiple MetaWindowActors per window
A lot of the code in mutter assumed a one to one relationship between a
MetaWindow and a MetaWindowActor, and that it owns its
MetaWindowActor. For the most part, we've gotten around this in GNOME
Shell by creating a ClutterClone of the MetaWindowActor. In some spots, we
reparent the actor owned by Mutter, and use it for our own purpose, which
just plain isn't nice. Since the Clutter maintainers have plans to kill
off ClutterClone, and since MetaWindowActor is already a very thin wrapper
around MetaShapedTexture, we should be able to create multiple
MetaWindowActors for a MetaShapedTexture.
This commit replaces the "compositor_private" property on MetaWindow with
a direct reference to a MetaWindowActor (which may go away at some point,
see below), and a list of window actors.
The direct reference is a replacement for the "compositor_private"
property that has been there previously. It doesn't make sense to run
mutter without compositing, so there's no real reason to keep the veil of
a compositor/core split.
The eventual plan I have in mind is to remove the direct reference to
MetaWindowActor, and have the compositor/plugin just create a new window
actor like anybody else.
The shadow is added in the paint step, not as a separate actor,
so the raise is a no-op. It also gets rid of an annoying misspelling
that's driving me crazy.
xrandr: ignore the error if setting the primary output fails
Some drivers which support RandR 1.4 may not support setting
or getting the primary output, therefore mutter should trap
and ignore any relevant errors.
The modesetting driver exposes this problem when used in
combination with the nvidia binary driver using RandR 1.4
offloading.
Also use a local display variable instead of calling
meta_get_display () every time.