mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-06-26 18:00:49 +00:00
Added some signal shims.
Original commit message from CVS: Added some signal shims. Fixed the queue state_change stuff.
This commit is contained in:
parent
3d71b301a2
commit
4158f4dc3b
|
@ -13,6 +13,7 @@
|
|||
#define G_TYPE_CHECK_CLASS_TYPE GTK_CHECK_CLASS_TYPE
|
||||
#define G_TYPE_FROM_CLASS(klass) (((GtkObjectClass *)(klass))->type)
|
||||
#define G_OBJECT_GET_CLASS(object) (GTK_OBJECT(object)->klass)
|
||||
#define G_OBJECT_TYPE GTK_OBJECT_TYPE
|
||||
#define G_OBJECT_CLASS_TYPE(gclass) (gclass->type)
|
||||
|
||||
// types
|
||||
|
@ -156,6 +157,14 @@ gtk_signal_connect((GtkObject *)object,name,func,func_data)
|
|||
g_signal_emit_by_name(object,name,data,self) \
|
||||
gtk_signal_emit_by_name ((GtkObject *)object,name,data,self)
|
||||
|
||||
#define \
|
||||
g_signal_handler_has_pending(object,name,data,may_block) \
|
||||
gtk_signal_handler_pending ((GtkObject *)object,name,may_block)
|
||||
|
||||
#define g_signal_lookup gtk_signal_lookup
|
||||
#define g_signal_handler_block gtk_signal_handler_block
|
||||
#define g_signal_handler_unblock gtk_signal_handler_unblock
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -439,12 +439,11 @@ gst_queue_change_state (GstElement *element)
|
|||
gst_queue_flush (queue);
|
||||
}
|
||||
|
||||
/* FIXME FIXME FIXME FIXME FIXME!!!!
|
||||
// if we haven't failed already, give the parent class a chance to ;-)
|
||||
if (GST_ELEMENT_CLASS (parent_class)->change_state)
|
||||
{
|
||||
gboolean valid_handler = FALSE;
|
||||
guint state_change_id = gtk_signal_lookup("state_change", G_OBJECT_TYPE(element));
|
||||
guint state_change_id = g_signal_lookup("state_change", G_OBJECT_TYPE(element));
|
||||
|
||||
// determine whether we need to block the parent (element) class'
|
||||
// STATE_CHANGE signal so we can UNLOCK before returning. we block
|
||||
|
@ -455,23 +454,22 @@ gst_queue_change_state (GstElement *element)
|
|||
// if element change_state() emits other signals, they need to be blocked
|
||||
// as well.
|
||||
if (state_change_id &&
|
||||
gtk_signal_handler_pending(G_OBJECT(element), state_change_id, FALSE))
|
||||
g_signal_handler_has_pending(G_OBJECT(element), state_change_id, 0, FALSE))
|
||||
valid_handler = TRUE;
|
||||
if (valid_handler)
|
||||
gtk_signal_handler_block(G_OBJECT(element), state_change_id);
|
||||
g_signal_handler_block(G_OBJECT(element), state_change_id);
|
||||
|
||||
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element);
|
||||
|
||||
if (valid_handler)
|
||||
gtk_signal_handler_unblock(G_OBJECT(element), state_change_id);
|
||||
g_signal_handler_unblock(G_OBJECT(element), state_change_id);
|
||||
|
||||
// UNLOCK, *then* emit signal (if there's one there)
|
||||
GST_UNLOCK(queue);
|
||||
if (valid_handler)
|
||||
gtk_signal_emit(G_OBJECT (element), state_change_id, GST_STATE(element));
|
||||
g_signal_emit(G_OBJECT (element), state_change_id, 0, GST_STATE(element));
|
||||
}
|
||||
else
|
||||
*/
|
||||
{
|
||||
ret = GST_STATE_SUCCESS;
|
||||
GST_UNLOCK(queue);
|
||||
|
|
|
@ -439,12 +439,11 @@ gst_queue_change_state (GstElement *element)
|
|||
gst_queue_flush (queue);
|
||||
}
|
||||
|
||||
/* FIXME FIXME FIXME FIXME FIXME!!!!
|
||||
// if we haven't failed already, give the parent class a chance to ;-)
|
||||
if (GST_ELEMENT_CLASS (parent_class)->change_state)
|
||||
{
|
||||
gboolean valid_handler = FALSE;
|
||||
guint state_change_id = gtk_signal_lookup("state_change", G_OBJECT_TYPE(element));
|
||||
guint state_change_id = g_signal_lookup("state_change", G_OBJECT_TYPE(element));
|
||||
|
||||
// determine whether we need to block the parent (element) class'
|
||||
// STATE_CHANGE signal so we can UNLOCK before returning. we block
|
||||
|
@ -455,23 +454,22 @@ gst_queue_change_state (GstElement *element)
|
|||
// if element change_state() emits other signals, they need to be blocked
|
||||
// as well.
|
||||
if (state_change_id &&
|
||||
gtk_signal_handler_pending(G_OBJECT(element), state_change_id, FALSE))
|
||||
g_signal_handler_has_pending(G_OBJECT(element), state_change_id, 0, FALSE))
|
||||
valid_handler = TRUE;
|
||||
if (valid_handler)
|
||||
gtk_signal_handler_block(G_OBJECT(element), state_change_id);
|
||||
g_signal_handler_block(G_OBJECT(element), state_change_id);
|
||||
|
||||
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element);
|
||||
|
||||
if (valid_handler)
|
||||
gtk_signal_handler_unblock(G_OBJECT(element), state_change_id);
|
||||
g_signal_handler_unblock(G_OBJECT(element), state_change_id);
|
||||
|
||||
// UNLOCK, *then* emit signal (if there's one there)
|
||||
GST_UNLOCK(queue);
|
||||
if (valid_handler)
|
||||
gtk_signal_emit(G_OBJECT (element), state_change_id, GST_STATE(element));
|
||||
g_signal_emit(G_OBJECT (element), state_change_id, 0, GST_STATE(element));
|
||||
}
|
||||
else
|
||||
*/
|
||||
{
|
||||
ret = GST_STATE_SUCCESS;
|
||||
GST_UNLOCK(queue);
|
||||
|
|
Loading…
Reference in a new issue