Commit 8363ad9342294c2203b3952fde97fc90e177e1cc

Authored by Perry Werneck
1 parent 0f1e1eaf

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)
... ...