Go to file
Jonas Ådahl 5547c98f97 wayland: Make MetaWaylandDataSource ownership protocol specific
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
2015-06-30 11:23:40 +08:00
data wayland: add keybindings for VT8-VT12 2015-02-19 16:42:58 -05:00
doc window: Remove the legacy get_outer_rect 2015-03-08 20:38:30 -07:00
po Updated German translation 2015-06-20 08:10:09 +00:00
src wayland: Make MetaWaylandDataSource ownership protocol specific 2015-06-30 11:23:40 +08:00
tools Clean up the source tree 2014-03-18 20:37:35 -04:00
.gitignore Add missing file from test framework 2014-09-12 13:40:33 -04:00
autogen.sh build: Drop deprecated autogen.sh variables 2015-03-04 21:00:48 +01:00
configure.ac configure: Remove some old cruft 2015-06-24 16:52:41 -07:00
COPYING
Makefile.am build: Move data files to their dedicated subfolder 2014-06-05 10:50:15 +02:00
mutter.doap doap: add <programming-language> 2014-07-31 17:50:28 +02:00
NEWS Bump version to 3.17.2 2015-05-27 10:28:44 +02:00