Commit 8363ad9342294c2203b3952fde97fc90e177e1cc
1 parent
0f1e1eaf
Exists in
master
and in
5 other branches
Corrigindo erro no cleanup do timer 3270.
Showing
1 changed file
with
16 additions
and
13 deletions
Show diff stats
src/pw3270/v3270/oia.c
@@ -816,7 +816,7 @@ struct timer_info | @@ -816,7 +816,7 @@ struct timer_info | ||
816 | 816 | ||
817 | static void release_timer(struct timer_info *info) | 817 | static void release_timer(struct timer_info *info) |
818 | { | 818 | { |
819 | - trace("Timer %p stops",info); | 819 | + trace("%s: info=%p",__FUNCTION__,info); |
820 | 820 | ||
821 | info->terminal->timer = NULL; | 821 | info->terminal->timer = NULL; |
822 | 822 | ||
@@ -1030,10 +1030,9 @@ void v3270_start_timer(GtkWidget *widget) | @@ -1030,10 +1030,9 @@ void v3270_start_timer(GtkWidget *widget) | ||
1030 | struct timer_info *info; | 1030 | struct timer_info *info; |
1031 | v3270 *terminal = GTK_V3270(widget); | 1031 | v3270 *terminal = GTK_V3270(widget); |
1032 | 1032 | ||
1033 | - trace("Timer %p starts",terminal); | ||
1034 | - | ||
1035 | if(terminal->timer) | 1033 | if(terminal->timer) |
1036 | { | 1034 | { |
1035 | + trace("Timer %p starts again",terminal->timer); | ||
1037 | g_source_ref(terminal->timer); | 1036 | g_source_ref(terminal->timer); |
1038 | return; | 1037 | return; |
1039 | } | 1038 | } |
@@ -1047,9 +1046,10 @@ void v3270_start_timer(GtkWidget *widget) | @@ -1047,9 +1046,10 @@ void v3270_start_timer(GtkWidget *widget) | ||
1047 | terminal->timer = g_timeout_source_new(100); | 1046 | terminal->timer = g_timeout_source_new(100); |
1048 | g_source_set_callback(terminal->timer,(GSourceFunc) update_timer, info, (GDestroyNotify) release_timer); | 1047 | g_source_set_callback(terminal->timer,(GSourceFunc) update_timer, info, (GDestroyNotify) release_timer); |
1049 | 1048 | ||
1050 | - g_source_attach(terminal->timer, NULL); | 1049 | + g_source_attach(terminal->timer,NULL); |
1051 | g_source_unref(terminal->timer); | 1050 | g_source_unref(terminal->timer); |
1052 | 1051 | ||
1052 | + trace("Timer %p starts",terminal->timer); | ||
1053 | 1053 | ||
1054 | } | 1054 | } |
1055 | 1055 | ||
@@ -1057,17 +1057,20 @@ void v3270_stop_timer(GtkWidget *widget) | @@ -1057,17 +1057,20 @@ void v3270_stop_timer(GtkWidget *widget) | ||
1057 | { | 1057 | { |
1058 | v3270 *terminal = GTK_V3270(widget); | 1058 | v3270 *terminal = GTK_V3270(widget); |
1059 | 1059 | ||
1060 | - trace("%s(%p)",__FUNCTION__,terminal->timer); | ||
1061 | - | ||
1062 | -// if(!terminal->timer) | ||
1063 | -// return; | ||
1064 | - | ||
1065 | -// trace("Timer=%p",terminal->timer); | ||
1066 | -// if(terminal->timer->ref_count < 2) | ||
1067 | -// g_source_destroy(terminal->timer); | 1060 | + trace("Timer %p stops",terminal->timer); |
1068 | 1061 | ||
1069 | if(terminal->timer) | 1062 | if(terminal->timer) |
1070 | - g_source_unref(terminal->timer); | 1063 | + { |
1064 | + if(terminal->timer->ref_count < 2) | ||
1065 | + { | ||
1066 | + g_source_destroy(terminal->timer); | ||
1067 | + } | ||
1068 | + else | ||
1069 | + { | ||
1070 | + g_source_unref(terminal->timer); | ||
1071 | + } | ||
1072 | + } | ||
1073 | + | ||
1071 | } | 1074 | } |
1072 | 1075 | ||
1073 | void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) | 1076 | void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) |