From 4c0b7333df1d53992a69d3e35485678d2462e7dd Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Tue, 17 Dec 2019 15:39:17 -0300 Subject: [PATCH] Disabling "save-settings" signal on every toggle change for performance reasons. --- src/include/terminal.h | 1 - src/terminal/callbacks.c | 4 ---- src/terminal/font/properties.c | 1 + src/terminal/keyboard/keyfile.c | 10 ++++++++-- src/terminal/keyfile.c | 2 ++ src/terminal/toggles.c | 1 - src/terminal/widget.c | 3 +-- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/include/terminal.h b/src/include/terminal.h index 0398b3c..9431a32 100644 --- a/src/include/terminal.h +++ b/src/include/terminal.h @@ -152,7 +152,6 @@ G_BEGIN_DECLS int scaled_fonts : 1; /// @brief Use scaled fonts int drawing : 1; /// @brief Draw widget? int freeze : 1; /// @brief Truee when the "save settings" signal is disabled. - int save_settings : 1; /// @brief The settings were changed. /// @brief Action properties. GtkResponseType responses[V3270_TOGGLEABLE_DIALOG_CUSTOM]; diff --git a/src/terminal/callbacks.c b/src/terminal/callbacks.c index 55fb0ac..210d049 100644 --- a/src/terminal/callbacks.c +++ b/src/terminal/callbacks.c @@ -87,10 +87,6 @@ static gboolean bg_update_message(H3270 *session) ); //trace("-----B %s %p",__FUNCTION__, lib3270_get_user_data(session)); - - if(terminal->save_settings) - v3270_emit_save_settings(GTK_WIDGET(terminal)); - return FALSE; } diff --git a/src/terminal/font/properties.c b/src/terminal/font/properties.c index 8a48e5c..7a59010 100644 --- a/src/terminal/font/properties.c +++ b/src/terminal/font/properties.c @@ -122,6 +122,7 @@ LIB3270_EXPORT void v3270_set_font_family(GtkWidget *widget, const gchar *name) void v3270_notify_setting(GtkWidget *widget, V3270_SETTING id) { + debug("%s(%u)",__FUNCTION__,(unsigned int) id); g_object_notify_by_pspec(G_OBJECT(widget), GTK_V3270_GET_CLASS(widget)->properties.settings[id]); v3270_emit_save_settings(widget); } diff --git a/src/terminal/keyboard/keyfile.c b/src/terminal/keyboard/keyfile.c index 6a1d6bb..73aab60 100644 --- a/src/terminal/keyboard/keyfile.c +++ b/src/terminal/keyboard/keyfile.c @@ -65,7 +65,7 @@ if(!key) return; - debug("%s=%s",v3270_accelerator_get_name(accel),keys); +// debug("%s=%s",v3270_accelerator_get_name(accel),keys); g_key_file_set_string( ((struct Args *) ptr)->key_file, @@ -130,7 +130,7 @@ return; } - debug("Recreating accelerators for action \"%s\"",v3270_accelerator_get_name(accel)); +// debug("Recreating accelerators for action \"%s\"",v3270_accelerator_get_name(accel)); { size_t ix; @@ -190,6 +190,9 @@ if(!keys) return FALSE; + g_object_freeze_notify(G_OBJECT(widget)); + terminal->freeze = 1; + size_t ix; for(ix = 0; keys[ix]; ix++) { @@ -204,5 +207,8 @@ v3270_accelerator_map_sort(terminal); + g_object_thaw_notify(G_OBJECT(widget)); + terminal->freeze = 0; + return TRUE; } diff --git a/src/terminal/keyfile.c b/src/terminal/keyfile.c index bafb6bb..21eb77c 100644 --- a/src/terminal/keyfile.c +++ b/src/terminal/keyfile.c @@ -261,6 +261,7 @@ group_name = "terminal"; g_object_freeze_notify(G_OBJECT(widget)); + terminal->freeze = 1; // Load Toggles for(ix = 0; ix < G_N_ELEMENTS(klass->properties.toggle); ix++) @@ -275,6 +276,7 @@ load_by_pspec(widget,klass->properties.settings[ix],key_file,group_name); g_object_thaw_notify(G_OBJECT(widget)); + terminal->freeze = 0; return TRUE; } diff --git a/src/terminal/toggles.c b/src/terminal/toggles.c index 288134d..9e17a77 100644 --- a/src/terminal/toggles.c +++ b/src/terminal/toggles.c @@ -126,7 +126,6 @@ void v3270_update_toggle(GtkWidget *widget, LIB3270_TOGGLE_ID id, unsigned char g_signal_emit(widget, v3270_widget_signal[V3270_SIGNAL_TOGGLE_CHANGED], 0, (guint) id, (gboolean) (value != 0), (gchar *) name); // Can't emit the signal on every toggle change because, sometimes, the saving of the settings file takes time. - GTK_V3270(widget)->save_settings = 1; // v3270_emit_save_settings(widget); } diff --git a/src/terminal/widget.c b/src/terminal/widget.c index 5c76db4..9ed34bd 100644 --- a/src/terminal/widget.c +++ b/src/terminal/widget.c @@ -493,6 +493,7 @@ static void v3270_init(v3270 *widget) widget->host = lib3270_session_new(NULL); lib3270_set_user_data(widget->host,widget); + lib3270_set_url(widget->host,NULL); // Install callbacks v3270_install_callbacks(widget); @@ -789,8 +790,6 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget) static gboolean bg_emit_save_settings(v3270 *terminal) { terminal->freeze = 0; - terminal->save_settings = 0; - g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE); g_object_unref(terminal); return FALSE; -- libgit2 0.21.2