Allow binding GdkContentFormatsBuilder
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 1 Feb 2018 16:43:15 +0000 (17:43 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 3 Feb 2018 15:24:13 +0000 (16:24 +0100)
commit2cbe094b919442471b54685a0fef0d6f83ce44b3
tree187a9b099feed2d2da8bcc14885ab1701fc92a95
parent4fa4b8525e62c711e6a7c10f25d5015428b2fa27
Allow binding GdkContentFormatsBuilder

GdkContentFormatsBuilder is currently not introspectable, as it does not
have a GType. We can turn it into a boxed type, but we need to implement
memory management for it.

The current gdk_content_formats_builder_free() function returns a newly
constructed value, so we cannot use it as a GBoxedFreeFunc; additionally
copying a GdkContentFormatsBuilder contents would make it a bit odd, as
you could get multiple identical GdkContentFormats out of the copies.

A simple approach is to model the GdkContentFormatsBuilder API to follow
the GBytes one: use reference counting for memory management, and have
a function to release a reference, return a GdkContentFormats, and reset
the GdkContentFormatsBuilder state.

For language bindings, we can provide a get_formats() function that
returns the GdkContentFormats instance and resets the builder instance,
leaving the reference count untouched.

For C convenience we can keep gdk_content_formats_builder_free(), and
make it a wrapper around gdk_content_formats_builder_get_formats(), with
the guarantee that it'll free the builder instance regardless of its
current reference count.

https://bugzilla.gnome.org/show_bug.cgi?id=793097
https://blogs.gnome.org/otte/2018/02/03/builders/
12 files changed:
docs/reference/gdk/gdk4-sections.txt
gdk/gdkclipboard.c
gdk/gdkcontentdeserializer.c
gdk/gdkcontentformats.c
gdk/gdkcontentformats.h
gdk/gdkcontentproviderimpl.c
gdk/gdkcontentserializer.c
gdk/wayland/gdkprimary-wayland.c
gdk/wayland/gdkselection-wayland.c
gdk/win32/gdkdnd-win32.c
gdk/x11/gdkclipboard-x11.c
gtk/gtkselection.c