Little more info. Using pdb I added a breakpoint at the end of __init_pipeline and another right after the call to init_pipeline in _end.
At the end of __init_pipeline I get: (Pdb) print self._vol_element /GstBin:bin0/GstVolume:volume0 (__main__.GstVolume) (Pdb) print self._vol_element.__gtype__ <GType GstVolume (49977824)> (Pdb) print self._vol_element.__grefcount__ 1 (Pdb) print self._vol_element.__gstrefcount__ 1 (Pdb) print self._vol_element.get_property('volume') 1.0 (Pdb) print vol.__gtype__ <GType GstVolume (49977824)> Note that the local variable vol and self._vol_element apparently refer to the same object, which has refcount == 1. After the call to __init_pipeline in _end I get: (Pdb) print self._vol_element /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py:1: Warning: invalid unclassed pointer in cast to `GstObject' # Copyright 2004-2009 Joe Wreschnig, Michael Urman, Steven Robertson /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py:1: Warning: g_object_ref: assertion `G_IS_OBJECT (object)' failed # Copyright 2004-2009 Joe Wreschnig, Michael Urman, Steven Robertson /0x4dfc0e0 (__main__.GstVolume) (Pdb) print self._vol_element.__gtype__ <GType GstVolume (49977824)> (Pdb) print self._vol_element.__grefcount__ 0 (Pdb) print self._vol_element.__gstrefcount__ 0 (Pdb) print self._vol_element.get_property('volume') *** TypeError: object at 0x553d910 of type __main__.GstVolume is not initialized So it looks very much like the object referenced by self._vol_element has been unreferenced. I added to the end of __init_pipeline: del vol del pipeline del bufbin and it seems that it is bufbin going out of scope which causes the issue: > /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py(142)__init_pipeline() -> del vol (Pdb) print self._vol_element.get_property('volume') 1.0 (Pdb) next > /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py(143)__init_pipeline() -> del pipeline (Pdb) print self._vol_element.get_property('volume') 1.0 (Pdb) next > /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py(144)__init_pipeline() -> del bufbin (Pdb) print self._vol_element.get_property('volume') 1.0 (Pdb) next > /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py(164)__init_pipeline() -> return True (Pdb) print self._vol_element.get_property('volume') *** TypeError: object at 0x60a58c0 of type __main__.GstVolume is not initialized Perhaps "self.bin.set_property('audio-sink', bufbin)" does not do correct reference counting? So I tried again with the breakpoints at the end of __init_pipeline and just after the call in _end and in __init_pipeline I got: (Pdb) print self.bin.get_property('audio-sink') /GstBin:bin0 (gst.Bin) (Pdb) print self.bin.get_property('audio-sink').__gtype__ <GType GstBin (32838272)> (Pdb) print self.bin.get_property('audio-sink').__grefcount__ 1 and after the call in _end I get: print self.bin.get_property('audio-sink') /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py:1: Warning: g_object_ref: assertion `G_IS_OBJECT (object)' failed # Copyright 2004-2009 Joe Wreschnig, Michael Urman, Steven Robertson /usr/lib/pymodules/python2.6/quodlibet/player/gstbe.py:1: Warning: g_value_take_object: assertion `G_IS_OBJECT (v_object)' failed # Copyright 2004-2009 Joe Wreschnig, Michael Urman, Steven Robertson None Ian. -- Ian Campbell "The geeks shall inherit the earth." -- Karl Lehenbauer
signature.asc
Description: This is a digitally signed message part