From 0bbe2aa134f0632a2106bf50050de1e08d88bb2b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 12 Dec 2024 09:48:29 +0600 Subject: [PATCH] Fixed crash at postsave function if it had widgets manipulations --- source/libublsettingsui-gtk3.c | 18 +++++++++++++++++- source/libublsettingsui-gtk3.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 456d960..21eb02b 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -1,4 +1,5 @@ #include "libublsettingsui-gtk3.h" +#include "ubl-window-settings.h" static char *__yon_config_mode=NULL; @@ -166,6 +167,17 @@ template_debug_window *template_debugger_window_new(){ return window; } +struct save_return { + void *save_success_argument; + config_str file_return; + int file_save; +}; + +gboolean _yon_postsave_function_start(struct save_return *data){ + save_success_function(data->save_success_argument,data->file_return,data->file_save); + return G_SOURCE_REMOVE; +} + void _yon_saving_threaded(char *final_command){ FILE *file = popen(final_command,"r"); int file_save; @@ -174,7 +186,11 @@ void _yon_saving_threaded(char *final_command){ file_return = yon_char_parsed_append(file_return,&file_save,final_command); if (save_success_function) { - save_success_function(save_success_argument,file_return,file_save); + struct save_return *data = malloc(sizeof(struct save_return)); + data->save_success_argument = save_success_argument; + data->file_return = file_return; + data->file_save = file_save; + gdk_threads_add_idle((GSourceFunc)_yon_postsave_function_start,data); } } diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 2fbb1d0..05193c1 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -98,6 +98,7 @@ #define SAVE_MODE_HDD_HOME_LABEL _("HDD sandbox with profile saving") #define CUSTOM_CONFIG_CREATION_ERROR_LABEL _("New configuration file creation failed") #define ROOT_CHECK_LABEL _("Upgrade to root") + #define SETTINGS_TITLE_LABEL _("Settings") #endif #define dull_parameter_get_command "ubconfig --source global get users PARAMETER"