mirror of
https://github.com/brl/mutter.git
synced 2024-11-24 00:50:42 -05:00
5547c98f97
Firstly, this patch makes MetawaylandDataSource a GObject. This is in order to easier track its lifetime without adding destroy signals etc. It also makes the vfunc table GObject class functions instead while at it, as well as moves protocol specific part of the source into their own implementations. An important part of this patch is the change of ownership. Prior to this patch, MetaWaylandDataDevice would kind of own the source, but for Wayland sources it would remove it if the corresponding wl_resource was destroyed. For XWayland clients it would own it completely, and only remove it if the source was replaced. This patch changes so that the protocol implementation owns the source. For Wayland sources, the wl_resource owns the source, and the MetaWaylandDataDevice sets a weak reference (so in other words, no semantical changes really). For XWayland sources, the source is owned by the selection bridge, and not removed until replaced or if the client goes away. Given the changes in ownership, data offers may now properly track the lifetime of a source it represents. Prior to this patch, if an offer with an XWayland source would loose its source, it wouldn't get notified and have an invalid pointer it would potentally crash on. For Wayland sources, an offer would have a weak reference and clean itself up if the source went away. This patch changes so the behavior is consistent, meaning a weak reference is added to the source GObject so that the offer can behave correctly both for Wayland sources and XWayland sources. https://bugzilla.gnome.org/show_bug.cgi?id=750680 |
||
---|---|---|
.. | ||
protocol | ||
meta-wayland-buffer.c | ||
meta-wayland-buffer.h | ||
meta-wayland-data-device-private.h | ||
meta-wayland-data-device.c | ||
meta-wayland-data-device.h | ||
meta-wayland-keyboard.c | ||
meta-wayland-keyboard.h | ||
meta-wayland-outputs.c | ||
meta-wayland-outputs.h | ||
meta-wayland-pointer.c | ||
meta-wayland-pointer.h | ||
meta-wayland-popup.c | ||
meta-wayland-popup.h | ||
meta-wayland-private.h | ||
meta-wayland-region.c | ||
meta-wayland-region.h | ||
meta-wayland-seat.c | ||
meta-wayland-seat.h | ||
meta-wayland-surface.c | ||
meta-wayland-surface.h | ||
meta-wayland-touch.c | ||
meta-wayland-touch.h | ||
meta-wayland-types.h | ||
meta-wayland-versions.h | ||
meta-wayland.c | ||
meta-wayland.h | ||
meta-window-wayland.c | ||
meta-window-wayland.h | ||
meta-xwayland-private.h | ||
meta-xwayland-selection-private.h | ||
meta-xwayland-selection.c | ||
meta-xwayland.c | ||
meta-xwayland.h |