tUse new API for GTK timeouts - vaccinewars - be a doctor and try to vaccinate the world (HTM) git clone git://src.adamsgaard.dk/vaccinewars (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 5e1b6dffc76d08b7c479d420b46a66711538632d (DIR) parent 54b9e74c81e0dc4bb786f7de94d96bda1569e101 (HTM) Author: Ben Webb <ben@salilab.org> Date: Wed, 11 Nov 2020 15:38:06 -0800 Use new API for GTK timeouts Don't use the deprecated gtk_timeout_(add|remove) functions to add timeouts to the main event loop; use the new equivalent glib functions. Diffstat: M src/gtkport/gtkport.c | 75 +------------------------------ M src/gtkport/gtkport.h | 3 --- M src/serverside.c | 6 +++--- 3 files changed, 4 insertions(+), 80 deletions(-) --- (DIR) diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c t@@ -245,15 +245,6 @@ struct _GdkInput { gpointer data; }; -typedef struct _GtkTimeout GtkTimeout; - -struct _GtkTimeout { - guint32 interval; - GtkFunction function; - gpointer data; - guint id; -}; - struct _OurSource { guint id; /* Unique identifier */ t@@ -654,7 +645,6 @@ static HFONT urlFont; static GSList *WindowList = NULL; static GSList *GdkInputs = NULL; static GSList *OurSources = NULL; -static GSList *GtkTimeouts = NULL; static HWND TopLevel = NULL; static WNDPROC wpOrigEntryProc, wpOrigTextProc; t@@ -709,19 +699,7 @@ static void DispatchTimeoutEvent(UINT id) { GSList *list; OurSource *s; - GtkTimeout *timeout; - - for (list = GtkTimeouts; list; list = g_slist_next(list)) { - timeout = (GtkTimeout *)list->data; - if (timeout->id == id) { - if (timeout->function) { - if (!(*timeout->function) (timeout->data)) { - gtk_timeout_remove(id); - } - } - break; - } - } + for (list = OurSources; list; list = g_slist_next(list)) { s = (OurSource *)list->data; if (s->id == id) { t@@ -5431,57 +5409,6 @@ gboolean dp_g_source_remove(guint tag) return TRUE; } -guint gtk_timeout_add(guint32 interval, GtkFunction function, - gpointer data) -{ - GtkTimeout *timeout; - GSList *list; - guint id = 1; - - /* Get an unused ID */ - list = GtkTimeouts; - while (list) { - timeout = (GtkTimeout *)list->data; - if (timeout->id == id) { - id++; - list = GtkTimeouts; - } else { - list = g_slist_next(list); - } - } - - timeout = g_new(GtkTimeout, 1); - timeout->interval = interval; - timeout->function = function; - timeout->data = data; - - timeout->id = SetTimer(TopLevel, id, interval, NULL); - if (timeout->id == 0) { - g_warning("Failed to create timer!"); - } - - GtkTimeouts = g_slist_append(GtkTimeouts, timeout); - return timeout->id; -} - -void gtk_timeout_remove(guint timeout_handler_id) -{ - GSList *list; - GtkTimeout *timeout; - - for (list = GtkTimeouts; list; list = g_slist_next(list)) { - timeout = (GtkTimeout *)list->data; - if (timeout->id == timeout_handler_id) { - if (KillTimer(TopLevel, timeout->id) == 0) { - g_warning("Failed to kill timer!"); - } - GtkTimeouts = g_slist_remove(GtkTimeouts, timeout); - g_free(timeout); - break; - } - } -} - GtkWidget *NewStockButton(const gchar *label, GtkAccelGroup *accel_group) { return gtk_button_new_with_label(_(label)); (DIR) diff --git a/src/gtkport/gtkport.h b/src/gtkport/gtkport.h t@@ -688,9 +688,6 @@ GtkWidget *gtk_progress_bar_new(); void gtk_progress_bar_set_orientation(GtkProgressBar *pbar, GtkProgressBarOrientation orientation); void gtk_progress_bar_update(GtkProgressBar *pbar, gfloat percentage); -guint gtk_timeout_add(guint32 interval, GtkFunction function, - gpointer data); -void gtk_timeout_remove(guint timeout_handler_id); guint gtk_main_level(void); GtkObject *GtkNewObject(GtkClass *klass); BOOL GetTextSize(HWND hWnd, char *text, LPSIZE lpSize, HFONT hFont); (DIR) diff --git a/src/serverside.c b/src/serverside.c t@@ -1369,7 +1369,7 @@ static void GuiSetTimeouts(void); static time_t NextTimeout = 0; static guint TimeoutTag = 0; -static gint GuiDoTimeouts(gpointer data) +static gboolean GuiDoTimeouts(gpointer data) { /* Forget the TimeoutTag so that GuiSetTimeouts doesn't delete it - * it'll be deleted automatically anyway when we return FALSE */ t@@ -1390,10 +1390,10 @@ void GuiSetTimeouts(void) MinTimeout = GetMinimumTimeout(FirstServer); if (TimeNow + MinTimeout < NextTimeout || NextTimeout < TimeNow) { if (TimeoutTag > 0) - gtk_timeout_remove(TimeoutTag); + dp_g_source_remove(TimeoutTag); TimeoutTag = 0; if (MinTimeout > 0) { - TimeoutTag = gtk_timeout_add(MinTimeout * 1000, GuiDoTimeouts, NULL); + TimeoutTag = dp_g_timeout_add(MinTimeout * 1000, GuiDoTimeouts, NULL); NextTimeout = TimeNow + MinTimeout; } }