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);
static bool_t event_execute(Event *event)
static pthread_mutex_t mutex
EXPORT void event_queue_cancel(const char *name, void *data)
EXPORT void event_queue_full(int time, const char *name, void *data, void(*destroy)(void *))
EXPORT void hook_call(const char *name, void *data)