aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/events_libevent.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/events_libevent.c')
-rw-r--r--protocols/events_libevent.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/protocols/events_libevent.c b/protocols/events_libevent.c
index f892e3eb..b9464093 100644
--- a/protocols/events_libevent.c
+++ b/protocols/events_libevent.c
@@ -80,28 +80,35 @@ static void b_event_passthrough( int fd, short event, void *data )
cond |= GAIM_INPUT_WRITE;
}
+ event_debug( "b_event_passthrough( %d, %d, 0x%x ) (%d)\n", fd, event, (int) data, b_ev->id );
+
if( !b_ev->function( b_ev->data, fd, cond ) )
+ {
+ event_debug( "Handler returned FALSE: " );
b_event_remove( b_ev->id );
+ }
}
-gint b_input_add( gint source, b_input_condition condition, b_event_handler function, gpointer data )
+gint b_input_add( gint fd, b_input_condition condition, b_event_handler function, gpointer data )
{
struct b_event_data *b_ev = g_new0( struct b_event_data, 1 );
- GIOCondition cond;
+ GIOCondition out_cond;
b_ev->id = id_next++;
b_ev->function = function;
b_ev->data = data;
- cond = EV_PERSIST;
+ out_cond = EV_PERSIST;
if( condition & GAIM_INPUT_READ )
- cond |= EV_READ;
+ out_cond |= EV_READ;
if( condition & GAIM_INPUT_WRITE )
- cond |= EV_WRITE;
+ out_cond |= EV_WRITE;
- event_set( &b_ev->evinfo, source, cond, b_event_passthrough, b_ev );
+ event_set( &b_ev->evinfo, fd, out_cond, b_event_passthrough, b_ev );
event_add( &b_ev->evinfo, NULL );
+ event_debug( "b_input_add( %d, %d, 0x%x, 0x%x ) = %d\n", fd, condition, function, data, b_ev->id );
+
g_hash_table_insert( id_hash, &b_ev->id, b_ev );
return b_ev->id;
@@ -123,25 +130,33 @@ gint b_timeout_add( gint timeout, b_event_handler function, gpointer data )
evtimer_set( &b_ev->evinfo, b_event_passthrough, b_ev );
evtimer_add( &b_ev->evinfo, &tv );
+ event_debug( "b_timeout_add( %d, %d, 0x%x ) = %d\n", timeout, function, data, b_ev->id );
+
g_hash_table_insert( id_hash, &b_ev->id, b_ev );
return b_ev->id;
}
-void b_event_remove( gint tag )
+void b_event_remove( gint id )
{
- struct b_event_data *b_ev = g_hash_table_lookup( id_hash, &tag );
+ struct b_event_data *b_ev = g_hash_table_lookup( id_hash, &id );
+ event_debug( "b_event_remove( %d )\n", id );
if( b_ev )
{
event_del( &b_ev->evinfo );
g_hash_table_remove( id_hash, &b_ev->id );
g_free( b_ev );
}
+ else
+ {
+ event_debug( "Invalid?\n" );
+ }
}
gboolean b_event_remove_by_data( gpointer data )
{
/* FIXME! */
+ event_debug( "FALSE!\n" );
return FALSE;
}