Added some signal shims.

Original commit message from CVS:
Added some signal shims.
Fixed the queue state_change stuff.
This commit is contained in:
Wim Taymans 2001-06-20 23:43:00 +00:00
parent 3d71b301a2
commit 4158f4dc3b
3 changed files with 19 additions and 14 deletions

View file

@ -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

View file

@ -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);

View file

@ -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);