gst/gst.defs: Keep refcount for the message of gst_bus_post()

Original commit message from CVS:
* gst/gst.defs:
Keep refcount for the message of gst_bus_post()
* gst/gststructure.override:
Don't free a structure on dealloc (the parent does that)
* testsuite/test_message.py:
Proper testing of bus functionnality with a mainloop
This commit is contained in:
Edward Hervey 2005-11-15 15:35:44 +00:00
parent ca54d806eb
commit 53f9716a25
4 changed files with 25 additions and 11 deletions

View file

@ -1,3 +1,12 @@
2005-11-15 Edward Hervey <edward@fluendo.com>
* gst/gst.defs:
Keep refcount for the message of gst_bus_post()
* gst/gststructure.override:
Don't free a structure on dealloc (the parent does that)
* testsuite/test_message.py:
Proper testing of bus functionnality with a mainloop
2005-11-11 Thomas Vander Stichele <thomas at apestaart dot org>
* configure.ac: back to HEAD

View file

@ -277,7 +277,7 @@
(c-name "gst_bus_post")
(return-type "gboolean")
(parameters
'("GstMessage*" "message")
'("GstMessage*" "message" (keep-refcount))
)
)
@ -3727,7 +3727,7 @@
'("const-gchar*" "name_template")
'("GstPadDirection" "direction")
'("GstPadPresence" "presence")
'("GstCaps*" "caps")
'("GstCaps*" "caps" (keep-refcount))
)
)

View file

@ -55,7 +55,6 @@ _wrap_gst_structure_new(PyGBoxed *self, PyObject *args, PyObject *kwargs)
PyErr_SetString(PyExc_RuntimeError, "could not create GstStructure object");
return -1;
}
self->free_on_dealloc = TRUE;
return 0;
}
%%

View file

@ -30,20 +30,26 @@ class NewTest(TestCase):
m = gst.message_new_eos(b)
gst.info("got message : %s" % m)
def _testApplication(self):
def message_application_cb(self, bus, message):
print "got message"
self.got_message = True
self.loop.quit()
def testApplication(self):
self.loop = gobject.MainLoop()
gst.info("creating new pipeline")
bin = gst.Pipeline()
bus = bin.get_bus()
bus.add_signal_watch()
got_message = False
def message_application_cb(bus, message):
got_message = True
bus.connect('message::application', message_application_cb)
self.got_message = False
bus.connect('message::application', self.message_application_cb)
gst.info("creating new application message from that bin")
msg = gst.message_new_application(bin, gst.Structure('foo'))
struc = gst.Structure("foo")
msg = gst.message_new_application(bin, struc)
bus.post(msg)
self.failUnless(got_message == True)
self.loop.run()
bus.remove_signal_watch()
self.failUnless(self.got_message == True)
self.gccollect()
if __name__ == "__main__":