From 8363ad9342294c2203b3952fde97fc90e177e1cc Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Tue, 5 Jul 2016 17:07:27 -0300 Subject: [PATCH] Corrigindo erro no cleanup do timer 3270. --- src/pw3270/v3270/oia.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/pw3270/v3270/oia.c b/src/pw3270/v3270/oia.c index 981e47e..2f89150 100644 --- a/src/pw3270/v3270/oia.c +++ b/src/pw3270/v3270/oia.c @@ -816,7 +816,7 @@ struct timer_info static void release_timer(struct timer_info *info) { - trace("Timer %p stops",info); + trace("%s: info=%p",__FUNCTION__,info); info->terminal->timer = NULL; @@ -1030,10 +1030,9 @@ void v3270_start_timer(GtkWidget *widget) struct timer_info *info; v3270 *terminal = GTK_V3270(widget); - trace("Timer %p starts",terminal); - if(terminal->timer) { + trace("Timer %p starts again",terminal->timer); g_source_ref(terminal->timer); return; } @@ -1047,9 +1046,10 @@ void v3270_start_timer(GtkWidget *widget) terminal->timer = g_timeout_source_new(100); g_source_set_callback(terminal->timer,(GSourceFunc) update_timer, info, (GDestroyNotify) release_timer); - g_source_attach(terminal->timer, NULL); + g_source_attach(terminal->timer,NULL); g_source_unref(terminal->timer); + trace("Timer %p starts",terminal->timer); } @@ -1057,17 +1057,20 @@ void v3270_stop_timer(GtkWidget *widget) { v3270 *terminal = GTK_V3270(widget); - trace("%s(%p)",__FUNCTION__,terminal->timer); - -// if(!terminal->timer) -// return; - -// trace("Timer=%p",terminal->timer); -// if(terminal->timer->ref_count < 2) -// g_source_destroy(terminal->timer); + trace("Timer %p stops",terminal->timer); if(terminal->timer) - g_source_unref(terminal->timer); + { + if(terminal->timer->ref_count < 2) + { + g_source_destroy(terminal->timer); + } + else + { + g_source_unref(terminal->timer); + } + } + } void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) -- libgit2 0.21.2