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 | 816 | |
817 | 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 | 821 | info->terminal->timer = NULL; |
822 | 822 | |
... | ... | @@ -1030,10 +1030,9 @@ void v3270_start_timer(GtkWidget *widget) |
1030 | 1030 | struct timer_info *info; |
1031 | 1031 | v3270 *terminal = GTK_V3270(widget); |
1032 | 1032 | |
1033 | - trace("Timer %p starts",terminal); | |
1034 | - | |
1035 | 1033 | if(terminal->timer) |
1036 | 1034 | { |
1035 | + trace("Timer %p starts again",terminal->timer); | |
1037 | 1036 | g_source_ref(terminal->timer); |
1038 | 1037 | return; |
1039 | 1038 | } |
... | ... | @@ -1047,9 +1046,10 @@ void v3270_start_timer(GtkWidget *widget) |
1047 | 1046 | terminal->timer = g_timeout_source_new(100); |
1048 | 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 | 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 | 1057 | { |
1058 | 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 | 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 | 1076 | void v3270_update_ssl(H3270 *session, LIB3270_SSL_STATE state) | ... | ... |