]> Dogcows Code - chaz/tint2/blobdiff - src/util/timer.c
*fix* warning
[chaz/tint2] / src / util / timer.c
index 8de7eec891795811da885208e3a9721ab2054c91..9f7ca0d65c85713e9d951e7facf4cd14eefef65d 100644 (file)
@@ -22,8 +22,9 @@
 
 #include "timer.h"
 
-GSList* timeout_list = 0;
+GSList* timeout_list;
 struct timeval next_timeout;
+GHashTable* multi_timeouts;
 
 
 // functions and structs for multi timeouts
@@ -61,7 +62,26 @@ void callback_multi_timeout(void* mth);
 void remove_from_multi_timeout(timeout* t);
 void stop_multi_timeout(timeout* t);
 
-GHashTable* multi_timeouts = 0;
+void default_timeout()
+{
+       timeout_list = 0;
+       multi_timeouts = 0;
+}
+
+void cleanup_timeout()
+{
+       while (timeout_list) {
+               timeout* t = timeout_list->data;
+               if (t->multi_timeout)
+                       stop_multi_timeout(t);
+               free(t);
+               timeout_list = g_slist_remove(timeout_list, t);
+       }
+       if (multi_timeouts) {
+               g_hash_table_destroy(multi_timeouts);
+               multi_timeouts = 0;
+       }
+}
 
 /** Implementation notes for timeouts: The timeouts are kept in a GSList sorted by their
        * expiration time.
@@ -156,18 +176,6 @@ void stop_timeout(timeout* t)
 }
 
 
-void stop_all_timeouts()
-{
-       while (timeout_list) {
-               timeout* t = timeout_list->data;
-               if (t->multi_timeout)
-                       stop_multi_timeout(t);
-               free(t);
-               timeout_list = g_slist_remove(timeout_list, t);
-       }
-}
-
-
 void add_timeout_intern(int value_msec, int interval_msec, void(*_callback)(), void* arg, timeout *t)
 {
        t->interval_msec = interval_msec;
@@ -390,6 +398,7 @@ void remove_from_multi_timeout(timeout* t)
 
        if (g_slist_length(mth->timeout_list) == 1) {
                timeout* last_timeout = mth->timeout_list->data;
+               mth->timeout_list = g_slist_remove(mth->timeout_list, last_timeout);
                free(last_timeout->multi_timeout);
                last_timeout->multi_timeout = 0;
                g_hash_table_remove(multi_timeouts, last_timeout);
This page took 0.026484 seconds and 4 git commands to generate.