31 void (* destroy) (
void *);
35 static pthread_mutex_t
mutex = PTHREAD_MUTEX_INITIALIZER;
40 pthread_mutex_lock (&
mutex);
42 g_source_remove (event->
source);
45 pthread_mutex_unlock (&
mutex);
51 event->destroy (event->
data);
53 g_slice_free (
Event, event);
60 event->name = g_strdup (name);
62 event->destroy = destroy;
64 pthread_mutex_lock (&
mutex);
66 event->source = g_timeout_add (time, (GSourceFunc)
event_execute, event);
69 pthread_mutex_unlock (&
mutex);
74 pthread_mutex_lock (&
mutex);
80 GList * next = node->next;
82 if (! strcmp (event->name, name) && (! data || event->data == data))
84 g_source_remove (event->source);
89 event->destroy (event->data);
91 g_slice_free (
Event, event);
97 pthread_mutex_unlock (&
mutex);