bus, clock: make sure these never have a floating ref
authorTim-Philipp Müller <tim@centricular.net>
Mon, 2 Jul 2012 23:07:11 +0000 (00:07 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Mon, 9 Jul 2012 12:09:45 +0000 (13:09 +0100)
commitc0c79188ca5d9f0a2d13ab3940a7e4977410cdca
tree36983a69abaa09f6ea1c9d1837a8f69fc5205c03
parente234651bd30558d7eb4fe525b790962119867da2
bus, clock: make sure these never have a floating ref

Clear the initial floating ref in the init function for
busses and clocks. These objects can be set on multiple
elements, so there's no clear parent-child relationship
here. Ideally we'd just not make them derive from
GInitiallyUnowned at all, but since we want to keep
using GstObject features for debugging, we'll just do
it like this.

This should also fix some problems with bindings, which
seem to get confused when they get floating refs from
non-constructor functions (or functions annotated to
have a 'transfer full' return type). This works now:

from gi.repository import GObject, Gst

GObject.threads_init()
Gst.init(None)

pipeline=Gst.Pipeline()
bus = pipeline.get_bus()
pipeline.set_state(Gst.State.NULL)
del pipeline;

https://bugzilla.gnome.org/show_bug.cgi?id=679286
https://bugzilla.gnome.org/show_bug.cgi?id=657202
gst/gstbus.c
gst/gstclock.c
gst/gstsystemclock.c
tests/check/gst/gstpipeline.c