]> git.meshlink.io Git - catta/blobdiff - timeeventq.c
fix two memory leaks
[catta] / timeeventq.c
index b3dd897f38d2db9200b8a46892773cf8b23d1794..78513aa961a46bb6e3b1be45b3c1ac53a2449165 100644 (file)
@@ -74,7 +74,7 @@ static gboolean dispatch_func(GSource *source, GSourceFunc callback, gpointer us
     return TRUE;
 }
 
-flxTimeEventQueue* flx_time_event_queue_new(GMainContext *context) {
+flxTimeEventQueue* flx_time_event_queue_new(GMainContext *context, gint priority) {
     flxTimeEventQueue *q;
 
     static GSourceFuncs source_funcs = {
@@ -89,6 +89,8 @@ flxTimeEventQueue* flx_time_event_queue_new(GMainContext *context) {
     q = (flxTimeEventQueue*) g_source_new(&source_funcs, sizeof(flxTimeEventQueue));
     q->prioq = flx_prio_queue_new(compare);
 
+    g_source_set_priority((GSource*) q, priority);
+    
     g_source_attach(&q->source, context);
     
     return q;
@@ -133,7 +135,7 @@ void flx_time_event_queue_remove(flxTimeEventQueue *q, flxTimeEvent *e) {
     g_free(e);
 }
 
-void flx_time_event_update(flxTimeEventQueue *q, flxTimeEvent *e, const GTimeVal *timeval) {
+void flx_time_event_queue_update(flxTimeEventQueue *q, flxTimeEvent *e, const GTimeVal *timeval) {
     g_assert(q);
     g_assert(e);
     g_assert(e->queue == q);
@@ -142,3 +144,17 @@ void flx_time_event_update(flxTimeEventQueue *q, flxTimeEvent *e, const GTimeVal
 
     flx_prio_queue_shuffle(q->prioq, e->node);
 }
+
+flxTimeEvent* flx_time_event_queue_root(flxTimeEventQueue *q) {
+    g_assert(q);
+
+    return q->prioq->root ? q->prioq->root->data : NULL;
+}
+
+flxTimeEvent* flx_time_event_next(flxTimeEvent *e) {
+    g_assert(e);
+
+    return e->node->next->data;
+}
+
+