Commit 18458b60db7cc7a92886645e64bcf3febafc9c62
1 parent
9fb1746f
Exists in
master
and in
1 other branch
Fixing program message changes.
Showing
1 changed file
with
17 additions
and
6 deletions
Show diff stats
src/terminal/callbacks.c
... | ... | @@ -85,23 +85,34 @@ static void update_toggle(H3270 *session, LIB3270_TOGGLE_ID id, unsigned char va |
85 | 85 | v3270_update_toggle((GtkWidget *) lib3270_get_user_data(session), id, value, name); |
86 | 86 | } |
87 | 87 | |
88 | -static gboolean bg_update_message(H3270 *session) | |
88 | + | |
89 | +struct update_message_data | |
89 | 90 | { |
90 | - v3270 *terminal = (v3270 *) lib3270_get_user_data(session); | |
91 | + H3270 *hSession; | |
92 | + LIB3270_MESSAGE message; | |
93 | +}; | |
94 | + | |
95 | +static gboolean bg_update_message(struct update_message_data *data) | |
96 | +{ | |
97 | + v3270 *terminal = (v3270 *) lib3270_get_user_data(data->hSession); | |
91 | 98 | |
92 | 99 | v3270_signal_emit( |
93 | 100 | terminal, |
94 | 101 | V3270_SIGNAL_MESSAGE_CHANGED, |
95 | - (gint) lib3270_get_program_message(session) | |
102 | + (gint) data->message | |
96 | 103 | ); |
97 | 104 | |
98 | - //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session)); | |
105 | + g_free(data); | |
99 | 106 | return FALSE; |
100 | 107 | } |
101 | 108 | |
102 | -static void update_message(H3270 *session, G_GNUC_UNUSED LIB3270_MESSAGE id) | |
109 | +static void update_message(H3270 *hSession, LIB3270_MESSAGE message) | |
103 | 110 | { |
104 | - g_idle_add((GSourceFunc) bg_update_message, session); | |
111 | + struct update_message_data *data = g_new0(struct update_message_data,1); | |
112 | + data->hSession = hSession; | |
113 | + data->message = message; | |
114 | + | |
115 | + g_idle_add((GSourceFunc) bg_update_message, data); | |
105 | 116 | } |
106 | 117 | |
107 | 118 | static void update_luname(H3270 *session, const char G_GNUC_UNUSED(*name)) | ... | ... |