Commit 4c0b7333df1d53992a69d3e35485678d2462e7dd

Authored by Perry Werneck
1 parent b2f7d539
Exists in master and in 1 other branch develop

Disabling "save-settings" signal on every toggle change for performance

reasons.
src/include/terminal.h
... ... @@ -152,7 +152,6 @@ G_BEGIN_DECLS
152 152 int scaled_fonts : 1; /// @brief Use scaled fonts
153 153 int drawing : 1; /// @brief Draw widget?
154 154 int freeze : 1; /// @brief Truee when the "save settings" signal is disabled.
155   - int save_settings : 1; /// @brief The settings were changed.
156 155  
157 156 /// @brief Action properties.
158 157 GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM];
... ...
src/terminal/callbacks.c
... ... @@ -87,10 +87,6 @@ static gboolean bg_update_message(H3270 *session)
87 87 );
88 88  
89 89 //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session));
90   -
91   - if(terminal->save_settings)
92   - v3270_emit_save_settings(GTK_WIDGET(terminal));
93   -
94 90 return FALSE;
95 91 }
96 92  
... ...
src/terminal/font/properties.c
... ... @@ -122,6 +122,7 @@ LIB3270_EXPORT void v3270_set_font_family(GtkWidget *widget, const gchar *name)
122 122  
123 123 void v3270_notify_setting(GtkWidget *widget, V3270_SETTING id)
124 124 {
  125 + debug("%s(%u)",__FUNCTION__,(unsigned int) id);
125 126 g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.settings[id]);
126 127 v3270_emit_save_settings(widget);
127 128 }
... ...
src/terminal/keyboard/keyfile.c
... ... @@ -65,7 +65,7 @@
65 65 if(!key)
66 66 return;
67 67  
68   - debug("%s=%s",v3270_accelerator_get_name(accel),keys);
  68 +// debug("%s=%s",v3270_accelerator_get_name(accel),keys);
69 69  
70 70 g_key_file_set_string(
71 71 ((struct Args *) ptr)->key_file,
... ... @@ -130,7 +130,7 @@
130 130 return;
131 131 }
132 132  
133   - debug("Recreating accelerators for action \"%s\"",v3270_accelerator_get_name(accel));
  133 +// debug("Recreating accelerators for action \"%s\"",v3270_accelerator_get_name(accel));
134 134  
135 135 {
136 136 size_t ix;
... ... @@ -190,6 +190,9 @@
190 190 if(!keys)
191 191 return FALSE;
192 192  
  193 + g_object_freeze_notify(G_OBJECT(widget));
  194 + terminal->freeze = 1;
  195 +
193 196 size_t ix;
194 197 for(ix = 0; keys[ix]; ix++)
195 198 {
... ... @@ -204,5 +207,8 @@
204 207  
205 208 v3270_accelerator_map_sort(terminal);
206 209  
  210 + g_object_thaw_notify(G_OBJECT(widget));
  211 + terminal->freeze = 0;
  212 +
207 213 return TRUE;
208 214 }
... ...
src/terminal/keyfile.c
... ... @@ -261,6 +261,7 @@
261 261 group_name = "terminal";
262 262  
263 263 g_object_freeze_notify(G_OBJECT(widget));
  264 + terminal->freeze = 1;
264 265  
265 266 // Load Toggles
266 267 for(ix = 0; ix < G_N_ELEMENTS(klass->properties.toggle); ix++)
... ... @@ -275,6 +276,7 @@
275 276 load_by_pspec(widget,klass->properties.settings[ix],key_file,group_name);
276 277  
277 278 g_object_thaw_notify(G_OBJECT(widget));
  279 + terminal->freeze = 0;
278 280  
279 281 return TRUE;
280 282 }
... ...
src/terminal/toggles.c
... ... @@ -126,7 +126,6 @@ void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char
126 126 g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name);
127 127  
128 128 // Can't emit the signal on every toggle change because, sometimes, the saving of the settings file takes time.
129   - GTK_V3270(widget)->save_settings = 1;
130 129 // v3270_emit_save_settings(widget);
131 130  
132 131 }
... ...
src/terminal/widget.c
... ... @@ -493,6 +493,7 @@ static void v3270_init(v3270 *widget)
493 493  
494 494 widget->host = lib3270_session_new(NULL);
495 495 lib3270_set_user_data(widget->host,widget);
  496 + lib3270_set_url(widget->host,NULL);
496 497  
497 498 // Install callbacks
498 499 v3270_install_callbacks(widget);
... ... @@ -789,8 +790,6 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget)
789 790 static gboolean bg_emit_save_settings(v3270 *terminal)
790 791 {
791 792 terminal->freeze = 0;
792   - terminal->save_settings = 0;
793   -
794 793 g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
795 794 g_object_unref(terminal);
796 795 return FALSE;
... ...