30 void (* destroy) (
void *);
34 static pthread_mutex_t
mutex = PTHREAD_MUTEX_INITIALIZER;
39 pthread_mutex_lock (&
mutex);
41 g_source_remove (event->
source);
44 pthread_mutex_unlock (&
mutex);
50 event->destroy (event->
data);
52 g_slice_free (
Event, event);
59 event->name = g_strdup (name);
61 event->destroy = destroy;
63 pthread_mutex_lock (&
mutex);
65 event->source = g_timeout_add (time, (GSourceFunc)
event_execute, event);
68 pthread_mutex_unlock (&
mutex);
73 pthread_mutex_lock (&
mutex);
79 GList * next = node->next;
81 if (! strcmp (event->name, name) && (! data || event->data == data))
83 g_source_remove (event->source);
88 event->destroy (event->data);
90 g_slice_free (
Event, event);
96 pthread_mutex_unlock (&
mutex);