Fixed thread memory errors

pull/90/head
parent 9607f59ffb
commit ec16ac90f1

@ -73,7 +73,7 @@ void on_config_local_load(GtkWidget *self,main_window *widgets){
main_config.update_thread_active=1; main_config.update_thread_active=1;
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); g_idle_add((GSourceFunc)yon_interface_update,widgets);
main_config.load_mode=1; main_config.load_mode=1;
} }
} }
@ -84,7 +84,7 @@ void on_config_global_load(GtkWidget *self,main_window *widgets){
main_config.update_thread_active=1; main_config.update_thread_active=1;
yon_load_proceed(YON_CONFIG_GLOBAL); yon_load_proceed(YON_CONFIG_GLOBAL);
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
gdk_threads_add_idle((GSourceFunc)((gboolean*)(void*)yon_interface_update),widgets); g_idle_add((GSourceFunc)yon_interface_update,widgets);
main_config.load_mode=0; main_config.load_mode=0;
} }
@ -97,7 +97,7 @@ void on_config_custom_load(GtkWidget *self,main_window *widgets){
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName); textdomain(LocaleName);
main_config.load_mode=3; main_config.load_mode=3;
yon_interface_update(widgets); g_idle_add((GSourceFunc)yon_interface_update,widgets);
} }
void on_service_constant_update(){ void on_service_constant_update(){
@ -780,12 +780,12 @@ void on_system_log_clicked(GtkWidget *self, main_window *widgets){
} }
void *on_terminal_relaunch(log_window *window){ gboolean on_terminal_relaunch(log_window *window){
gtk_widget_set_sensitive(window->SystemTerminal,0); gtk_widget_set_sensitive(window->SystemTerminal,0);
sleep(1); sleep(1);
gtk_widget_set_sensitive(window->SystemTerminal,1); gtk_widget_set_sensitive(window->SystemTerminal,1);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL); yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
return NULL; return G_SOURCE_REMOVE;
} }
void on_save_clicked(GtkWidget *self, log_window *window){ void on_save_clicked(GtkWidget *self, log_window *window){
@ -793,7 +793,7 @@ void on_save_clicked(GtkWidget *self, log_window *window){
vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"\30",-1); vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"\30",-1);
vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"Y\r",-1); vte_terminal_feed_child(VTE_TERMINAL(window->SystemTerminal),"Y\r",-1);
gtk_widget_grab_focus(window->SystemTerminal); gtk_widget_grab_focus(window->SystemTerminal);
g_thread_new(NULL,(GThreadFunc)on_terminal_relaunch,window); g_idle_add((GSourceFunc)on_terminal_relaunch,window);
} }
void on_update_clicked(GtkWidget *self, log_window *window){ void on_update_clicked(GtkWidget *self, log_window *window){
@ -1097,6 +1097,7 @@ gboolean yon_interface_update(main_window *widgets){
gtk_list_store_clear(widgets->UserList); gtk_list_store_clear(widgets->UserList);
gtk_list_store_clear(widgets->ConfigList); gtk_list_store_clear(widgets->ConfigList);
gtk_list_store_clear(widgets->TimersList); gtk_list_store_clear(widgets->TimersList);
while(gtk_events_pending()) gtk_main_iteration();
int system_size; int system_size;
config_str system_services = yon_config_load(load_services_command,&system_size); config_str system_services = yon_config_load(load_services_command,&system_size);
int user_size; int user_size;
@ -1129,6 +1130,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
} }
while(gtk_events_pending()) gtk_main_iteration();
for (int i=0; i<user_size;i++){ for (int i=0; i<user_size;i++){
GtkTreeIter iter; GtkTreeIter iter;
if (user_services[i][strlen(user_services[i])-1]=='\n') user_services[i][strlen(user_services[i])-1] = '\0'; if (user_services[i][strlen(user_services[i])-1]=='\n') user_services[i][strlen(user_services[i])-1] = '\0';
@ -1143,6 +1145,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
} }
while(gtk_events_pending()) gtk_main_iteration();
int descr_size; int descr_size;
config_str config_descr = yon_resource_open_file(systemd_config_path,&descr_size); config_str config_descr = yon_resource_open_file(systemd_config_path,&descr_size);
for (int i=0; i<config_size;i++){ for (int i=0; i<config_size;i++){
@ -1179,6 +1182,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
} }
yon_sessions_update(widgets); yon_sessions_update(widgets);
while(gtk_events_pending()) gtk_main_iteration();
for (size_t i=0;i<json_object_array_length(jsobject);i++){ for (size_t i=0;i<json_object_array_length(jsobject);i++){
struct json_object *item_obj = json_object_array_get_idx(jsobject, i); struct json_object *item_obj = json_object_array_get_idx(jsobject, i);
const char *unit="",*next="",*left="",*last="",*passed="",*activates=""; const char *unit="",*next="",*left="",*last="",*passed="",*activates="";
@ -1255,6 +1259,7 @@ gboolean yon_interface_update(main_window *widgets){
gtk_list_store_set(widgets->TimersList,&iter,0,unit,1,next,2,left,3,last,4,passed,5,activates,-1); gtk_list_store_set(widgets->TimersList,&iter,0,unit,1,next,2,left,3,last,4,passed,5,activates,-1);
} }
} }
while(gtk_events_pending()) gtk_main_iteration();
{ {
int parsed_size; int parsed_size;
char *enabled = yon_config_get_by_key(SERVICES_ENABLE_PARAMETER); char *enabled = yon_config_get_by_key(SERVICES_ENABLE_PARAMETER);
@ -1284,6 +1289,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
while(gtk_events_pending()) gtk_main_iteration();
char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER); char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER);
parsed = yon_char_parse(disabled,&parsed_size,","); parsed = yon_char_parse(disabled,&parsed_size,",");
valid = gtk_tree_model_get_iter_first(model,&iter); valid = gtk_tree_model_get_iter_first(model,&iter);
@ -1302,6 +1308,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
while(gtk_events_pending()) gtk_main_iteration();
char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER); char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER);
parsed = yon_char_parse(masked,&parsed_size,","); parsed = yon_char_parse(masked,&parsed_size,",");
valid = gtk_tree_model_get_iter_first(model,&iter); valid = gtk_tree_model_get_iter_first(model,&iter);
@ -1319,6 +1326,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
} }
} }
while(gtk_events_pending()) gtk_main_iteration();
{ {
int parsed_size; int parsed_size;
@ -1343,6 +1351,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
while(gtk_events_pending()) gtk_main_iteration();
char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER); char *disabled = yon_config_get_by_key(SERVICES_DISABLE_PARAMETER);
parsed = yon_char_parse(disabled,&parsed_size,","); parsed = yon_char_parse(disabled,&parsed_size,",");
valid = gtk_tree_model_get_iter_first(model,&iter); valid = gtk_tree_model_get_iter_first(model,&iter);
@ -1361,6 +1370,7 @@ gboolean yon_interface_update(main_window *widgets){
} }
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
while(gtk_events_pending()) gtk_main_iteration();
char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER); char *masked = yon_config_get_by_key(SERVICES_MASK_PARAMETER);
parsed = yon_char_parse(masked,&parsed_size,","); parsed = yon_char_parse(masked,&parsed_size,",");
valid = gtk_tree_model_get_iter_first(model,&iter); valid = gtk_tree_model_get_iter_first(model,&iter);
@ -1378,12 +1388,13 @@ gboolean yon_interface_update(main_window *widgets){
} }
} }
} }
while(gtk_events_pending()) gtk_main_iteration();
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemFilter)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemFilter));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserFilter)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserFilter));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ConfigMainTree),GTK_TREE_MODEL(widgets->ConfigList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ConfigMainTree),GTK_TREE_MODEL(widgets->ConfigList));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->TimersMainTree),GTK_TREE_MODEL(widgets->TimersList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->TimersMainTree),GTK_TREE_MODEL(widgets->TimersList));
main_config.update_thread_active=0; main_config.update_thread_active=0;
return 0; return G_SOURCE_REMOVE;
} }
void on_interface_update(GtkWidget *self, main_window *widgets){ void on_interface_update(GtkWidget *self, main_window *widgets){
@ -1392,8 +1403,7 @@ void on_interface_update(GtkWidget *self, main_window *widgets){
gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree))); gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemUnitsTree)));
gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree))); gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)));
main_config.update_thread_active=1; main_config.update_thread_active=1;
pthread_t tid; g_idle_add((GSourceFunc)yon_interface_update,widgets);
pthread_create(&tid,NULL,(void*)(void*)((yon_interface_update)),widgets);
} }
} }
@ -1851,8 +1861,8 @@ void yon_main_window_complete(main_window *widgets){
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
if (!main_config.update_thread_active){ if (!main_config.update_thread_active){
main_config.update_thread_active=1; main_config.update_thread_active=1;
pthread_t tid; g_idle_add((GSourceFunc)yon_interface_update,widgets);
pthread_create(&tid,NULL,(void*)(void*)((yon_interface_update)),widgets);
} }
yon_save_window_set_postsave_function(on_save_done,widgets); yon_save_window_set_postsave_function(on_save_done,widgets);
} }

@ -377,7 +377,7 @@ void on_system_info_clicked(GtkWidget *self, main_window *widgets);
void on_system_log_clicked(GtkWidget *self, main_window *widgets); void on_system_log_clicked(GtkWidget *self, main_window *widgets);
void *on_terminal_relaunch(log_window *window); gboolean on_terminal_relaunch(log_window *window);
void on_save_clicked(GtkWidget *self, log_window *window); void on_save_clicked(GtkWidget *self, log_window *window);
void on_update_clicked(GtkWidget *self, log_window *window); void on_update_clicked(GtkWidget *self, log_window *window);
void on_system_edit_clicked(GtkWidget *self, main_window *widgets); void on_system_edit_clicked(GtkWidget *self, main_window *widgets);

Loading…
Cancel
Save