gst/gstbus.c: Make it known that gst_bus_poll() is pure evil (fixes #538810).

Original commit message from CVS:
* gst/gstbus.c:
Make it known that gst_bus_poll() is pure evil (fixes #538810).
This commit is contained in:
Tim-Philipp Müller 2008-06-20 10:20:08 +00:00
parent ef70805d24
commit 1487b50720
2 changed files with 24 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2008-06-20 Tim-Philipp Müller <tim.muller at collabora co uk>
* gst/gstbus.c:
Make it known that gst_bus_poll() is pure evil (fixes #538810).
2008-06-20 Stefan Kost <ensonic@users.sf.net> 2008-06-20 Stefan Kost <ensonic@users.sf.net>
* plugins/elements/gstcapsfilter.c: * plugins/elements/gstcapsfilter.c:

View file

@ -972,7 +972,8 @@ poll_destroy_timeout (GstBusPollData * poll_data)
* @bus: a #GstBus * @bus: a #GstBus
* @events: a mask of #GstMessageType, representing the set of message types to * @events: a mask of #GstMessageType, representing the set of message types to
* poll for. * poll for.
* @timeout: the poll timeout, as a #GstClockTimeDiff, or -1 to poll indefinitely. * @timeout: the poll timeout, as a #GstClockTimeDiff, or -1 to poll
* indefinitely.
* *
* Poll the bus for messages. Will block while waiting for messages to come. * Poll the bus for messages. Will block while waiting for messages to come.
* You can specify a maximum time to poll with the @timeout parameter. If * You can specify a maximum time to poll with the @timeout parameter. If
@ -989,6 +990,23 @@ poll_destroy_timeout (GstBusPollData * poll_data)
* This function will run a main loop from the default main context when * This function will run a main loop from the default main context when
* polling. * polling.
* *
* You should never use this function, since it is pure evil. This is
* especially true for GUI applications based on Gtk+ or Qt, but also for any
* other non-trivial application that uses the GLib main loop. As this function
* runs a GLib main loop, any callback attached to the default GLib main
* context may be invoked. This could be timeouts, GUI events, I/O events etc.;
* even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
* may do things you do not expect, e.g. destroy the main application window or
* some other resource; change other application state; display a dialog and
* run another main loop until the user clicks it away. In short, using this
* function may add a lot of complexity to your code through unexpected
* re-entrancy and unexpected changes to your application's state.
*
* For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
* other short timeouts use gst_bus_timed_pop_filtered(); everything else is
* better handled by setting up an asynchronous bus watch and doing things
* from there.
*
* Returns: The message that was received, or NULL if the poll timed out. * Returns: The message that was received, or NULL if the poll timed out.
* The message is taken from the bus and needs to be unreffed with * The message is taken from the bus and needs to be unreffed with
* gst_message_unref() after usage. * gst_message_unref() after usage.