*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#ifndef __GST_BUS_H__
#include <gst/gstmessage.h>
#include <gst/gstclock.h>
-#include <gst/gstatomicqueue.h>
G_BEGIN_DECLS
* GstBusSyncHandler:
* @bus: the #GstBus that sent the message
* @message: the #GstMessage
- * @data: user data that has been given, when registering the handler
+ * @user_data: user data that has been given, when registering the handler
*
* Handler will be invoked synchronously, when a new message has been injected
* into the bus. This function is mostly used internally. Only one sync handler
*
* Returns: #GstBusSyncReply stating what to do with the message
*/
-typedef GstBusSyncReply (*GstBusSyncHandler) (GstBus * bus, GstMessage * message, gpointer data);
+typedef GstBusSyncReply (*GstBusSyncHandler) (GstBus * bus, GstMessage * message, gpointer user_data);
/**
* GstBusFunc:
* @bus: the #GstBus that sent the message
* @message: the #GstMessage
- * @data: user data that has been given, when registering the handler
+ * @user_data: user data that has been given, when registering the handler
*
* Specifies the type of function passed to gst_bus_add_watch() or
* gst_bus_add_watch_full(), which is called from the mainloop when a message
* function so it should not be freed in the function.
*
* Note that this function is used as a GSourceFunc which means that returning
- * FALSE will remove the GSource from the mainloop.
+ * %FALSE will remove the GSource from the mainloop.
*
* Returns: %FALSE if the event source should be removed.
*/
-typedef gboolean (*GstBusFunc) (GstBus * bus, GstMessage * message, gpointer data);
+typedef gboolean (*GstBusFunc) (GstBus * bus, GstMessage * message, gpointer user_data);
/**
* GstBus:
GstObject object;
/*< private >*/
- GstAtomicQueue *queue;
- GMutex *queue_lock;
-
- GstBusSyncHandler sync_handler;
- gpointer sync_handler_data;
-
- guint signal_watch_id;
- guint num_signal_watchers;
-
- /*< private >*/
GstBusPrivate *priv;
gpointer _gst_reserved[GST_PADDING];
gpointer _gst_reserved[GST_PADDING];
};
+GST_API
GType gst_bus_get_type (void);
+GST_API
GstBus* gst_bus_new (void);
+GST_API
gboolean gst_bus_post (GstBus * bus, GstMessage * message);
+GST_API
gboolean gst_bus_have_pending (GstBus * bus);
+
+GST_API
GstMessage * gst_bus_peek (GstBus * bus);
+
+GST_API
GstMessage * gst_bus_pop (GstBus * bus);
+
+GST_API
GstMessage * gst_bus_pop_filtered (GstBus * bus, GstMessageType types);
+
+GST_API
GstMessage * gst_bus_timed_pop (GstBus * bus, GstClockTime timeout);
+
+GST_API
GstMessage * gst_bus_timed_pop_filtered (GstBus * bus, GstClockTime timeout, GstMessageType types);
+
+GST_API
void gst_bus_set_flushing (GstBus * bus, gboolean flushing);
/* synchronous dispatching */
+
+GST_API
void gst_bus_set_sync_handler (GstBus * bus, GstBusSyncHandler func,
- gpointer data);
+ gpointer user_data, GDestroyNotify notify);
+
+/* asynchronous message notifications */
+
+GST_API
+void gst_bus_get_pollfd (GstBus * bus, GPollFD *fd);
+
/* GSource based dispatching */
+
+GST_API
GSource * gst_bus_create_watch (GstBus * bus);
+
+GST_API
guint gst_bus_add_watch_full (GstBus * bus,
gint priority,
GstBusFunc func,
gpointer user_data,
GDestroyNotify notify);
+GST_API
guint gst_bus_add_watch (GstBus * bus,
GstBusFunc func,
gpointer user_data);
+GST_API
+gboolean gst_bus_remove_watch (GstBus * bus);
/* polling the bus */
+
+GST_API
GstMessage* gst_bus_poll (GstBus *bus, GstMessageType events,
- GstClockTimeDiff timeout);
+ GstClockTime timeout);
/* signal based dispatching helper functions. */
+
+GST_API
gboolean gst_bus_async_signal_func (GstBus *bus, GstMessage *message,
gpointer data);
+GST_API
GstBusSyncReply gst_bus_sync_signal_handler (GstBus *bus, GstMessage *message,
gpointer data);
/* convenience api to add/remove a gsource that emits the async signals */
+
+GST_API
void gst_bus_add_signal_watch (GstBus * bus);
+
+GST_API
void gst_bus_add_signal_watch_full (GstBus * bus, gint priority);
+
+GST_API
void gst_bus_remove_signal_watch (GstBus * bus);
+GST_API
void gst_bus_enable_sync_message_emission (GstBus * bus);
+
+GST_API
void gst_bus_disable_sync_message_emission (GstBus * bus);
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstBus, gst_object_unref)
+#endif
+
G_END_DECLS
#endif /* __GST_BUS_H__ */