From 01a402fbe26e52ec7016aff061cb9dd42a808061 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 1 Aug 2024 10:11:06 +0600 Subject: [PATCH] RAM usage fix --- source/ubinstall-gtk.c | 73 ++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 00012c7..14bb299 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -847,14 +847,9 @@ gboolean on_image_slide(void *data){ config_str target = yon_char_parsed_new(&size,slide_repeat_path); if (size) yon_char_parsed_free(target,size); - // GtkWidget *parent = gtk_widget_get_parent(widgets->SlidesImage); - // gtk_widget_destroy(widgets->SlidesImage); - // widgets->SlidesImage = gtk_image_new(); - // gtk_container_add(GTK_CONTAINER(parent),widgets->SlidesImage); - // gtk_widget_show(widgets->SlidesImage); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),widgets->slides_original[cur_slide]); gtk_widget_queue_draw(widgets->SlidesImage); - if (cur_slideNotebook),YON_PAGE_INSTALL_ERROR); - // yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),INSTALLATION_ERROR,5,BACKGROUND_IMAGE_FAIL_TYPE); }; free(command); main_config.install_thread=NULL; @@ -895,48 +889,50 @@ void *on_config_save(void *data){ } gboolean yon_installation_progress_update(void *data); -gboolean yon_installation_progress_update(void *data){ +gboolean yon_installation_progress_update(void *data) { main_window *widgets = (main_window*)data; - // while (gtk_events_pending()) gtk_main_iteration(); int size; - while (main_config.log_progress_buzy){ - // while (gtk_events_pending()) gtk_main_iteration(); - }; - main_config.log_progress_buzy=1; - config_str text = yon_file_open(progress_path,&size); - main_config.log_progress_buzy=0; - if (size){ - if (!yon_char_is_empty(text[size-1])&&text[size-1][0]=='('){ - char * current_copy = yon_char_new(text[size-1]); - char *percentage = yon_char_divide_search(current_copy,")",-1); - yon_char_parsed_free(text,size); - free(yon_char_divide(current_copy,0)); - free(yon_char_divide(percentage,0)); - if (strcmp(percentage,"#pb")){ - double fraction = atof(percentage); - gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),current_copy); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),fraction/100); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress),0); - gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel),""); + + while (main_config.log_progress_buzy) { + while (gtk_events_pending()) gtk_main_iteration(); + } + main_config.log_progress_buzy = 1; + config_str text = yon_file_open(progress_path, &size); + main_config.log_progress_buzy = 0; + + if (size) { + if (!yon_char_is_empty(text[size-1]) && text[size-1][0] == '(') { + char *current_copy = yon_char_new(text[size-1]); + char *percentage = yon_char_divide_search(current_copy, ")", -1); + yon_char_parsed_free(text, size); + + if (strcmp(percentage, "#pb")) { + double fraction = atof(percentage); + gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel), current_copy); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress), fraction / 100); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), 0); + gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), ""); } else { gtk_widget_show(gtk_widget_get_parent(widgets->PackageInstallationProgress)); - - int size; - config_str parsed = yon_char_parse(current_copy,&size," "); - double fraction = atof(parsed[2])/100; - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress),fraction); - gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel),yon_char_parsed_to_string(parsed,size," ")); - yon_char_parsed_free(parsed,size); + + config_str parsed = yon_char_parse(current_copy, &size, " "); + if (size >= 3) { + double fraction = atof(parsed[2]) / 100; + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), fraction); + gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), yon_char_parsed_to_string(parsed, size, " ")); + } + yon_char_parsed_free(parsed, size); } + free(current_copy); free(percentage); } } - - if (main_config.install_thread){ + + if (main_config.install_thread) { return 1; } else { - gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel),""); + gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), ""); return 0; } } @@ -2203,7 +2199,6 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->HostnameSensitiveCheck),"toggled",G_CALLBACK(on_autohostname_sensitiveness_check),widgets); g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(on_autohostname_check),widgets); g_signal_connect(G_OBJECT(widgets->HotnameEntry),"changed",G_CALLBACK(on_hostname_entry_changed),widgets); - g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),widgets); gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter),0);