From f6c017e88c54b9881520c74c697d1d9251130822 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 19 Mar 2014 22:30:40 -0700 Subject: [PATCH] shared: Use unsigned int for timeout identifier --- src/shared/timeout-glib.c | 15 ++++++++++----- src/shared/timeout-mainloop.c | 27 +++++++++++++++++---------- src/shared/timeout.h | 4 ++-- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/shared/timeout-glib.c b/src/shared/timeout-glib.c index c045efcdc..4163bced7 100644 --- a/src/shared/timeout-glib.c +++ b/src/shared/timeout-glib.c @@ -47,18 +47,22 @@ static void timeout_destroy(gpointer user_data) g_free(data); } -int timeout_add(unsigned int ms, timeout_func_t func, void *user_data, - timeout_destroy_func_t destroy) +unsigned int timeout_add(unsigned int timeout, timeout_func_t func, + void *user_data, timeout_destroy_func_t destroy) { + struct timeout_data *data; guint id; - struct timeout_data *data = g_malloc0(sizeof(*data)); + + data = g_try_new0(struct timeout_data, 1); + if (!data) + return 0; data->func = func; data->destroy = destroy; data->user_data = user_data; - id = g_timeout_add_full(G_PRIORITY_DEFAULT, ms, timeout_callback, data, - timeout_destroy); + id = g_timeout_add_full(G_PRIORITY_DEFAULT, timeout, timeout_callback, + data, timeout_destroy); if (!id) g_free(data); @@ -68,6 +72,7 @@ int timeout_add(unsigned int ms, timeout_func_t func, void *user_data, void timeout_remove(unsigned int id) { GSource *source = g_main_context_find_source_by_id(NULL, id); + if (source) g_source_destroy(source); } diff --git a/src/shared/timeout-mainloop.c b/src/shared/timeout-mainloop.c index bdc527ac9..a0d18b7f5 100644 --- a/src/shared/timeout-mainloop.c +++ b/src/shared/timeout-mainloop.c @@ -19,10 +19,11 @@ #include -#include "timeout.h" - #include "monitor/mainloop.h" +#include "util.h" +#include "timeout.h" + struct timeout_data { int id; timeout_func_t func; @@ -52,27 +53,33 @@ static void timeout_destroy(void *user_data) free(data); } -int timeout_add(unsigned int t, timeout_func_t func, void *user_data, - timeout_destroy_func_t destroy) +unsigned int timeout_add(unsigned int timeout, timeout_func_t func, + void *user_data, timeout_destroy_func_t destroy) { - struct timeout_data *data = malloc(sizeof(*data)); + struct timeout_data *data; + + data = new0(struct timeout_data, 1); + if (!data) + return 0; data->func = func; data->user_data = user_data; - data->timeout = t; + data->timeout = timeout; - data->id = mainloop_add_timeout(t, timeout_callback, data, + data->id = mainloop_add_timeout(timeout, timeout_callback, data, timeout_destroy); if (!data->id) { free(data); return 0; } - return data->id; + return (unsigned int) data->id; } void timeout_remove(unsigned int id) { - if (id) - mainloop_remove_timeout(id); + if (!id) + return; + + mainloop_remove_timeout((int) id); } diff --git a/src/shared/timeout.h b/src/shared/timeout.h index c13616f8d..4930ce162 100644 --- a/src/shared/timeout.h +++ b/src/shared/timeout.h @@ -22,6 +22,6 @@ typedef bool (*timeout_func_t)(void *user_data); typedef void (*timeout_destroy_func_t)(void *user_data); -int timeout_add(unsigned int msec, timeout_func_t func, void *user_data, - timeout_destroy_func_t destroy); +unsigned int timeout_add(unsigned int timeout, timeout_func_t func, + void *user_data, timeout_destroy_func_t destroy); void timeout_remove(unsigned int id); -- 2.47.3