Leaks fixes

pull/60/head
parent bdb401caea
commit 5438235489

@ -355,14 +355,16 @@ void yon_interface_update(main_window *widgets){
int langsize;
config_str lang = default_langs(&langsize);
for_iter(widgets->LanguagesList,&iter){
char *cur;
char *cur=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,2,&cur,-1);
if (lang&&yon_char_parsed_check_exist(lang,langsize,cur)>-1){
gtk_list_store_set(widgets->LanguagesList,&iter,0,1,-1);
} else {
gtk_list_store_set(widgets->LanguagesList,&iter,0,0,-1);
}
if (cur) free(cur);
}
if (langsize) yon_char_parsed_free(lang,langsize);
// gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
}
@ -921,7 +923,7 @@ int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled
GdkPixbuf *scaledPixBuf = gdk_pixbuf_scale_simple(pixbuf_unscaled, newImageWidth, newImgHeight, GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(target, scaledPixBuf);
g_object_unref(scaledPixBuf); // Освобождаем память, занятую скалированным изображением
g_object_unref(scaledPixBuf);
return 1;
}
@ -1048,10 +1050,10 @@ gboolean yon_installation_progress_update(void *data) {
yon_char_parsed_free(parsed, size);
}
yon_char_parsed_free(text, size);
free(current_copy);
free(percentage);
}
yon_char_parsed_free(text, size);
}
if (main_config.install_thread) {
@ -1986,8 +1988,10 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo),parsed[i],_(parsed[i]));
}
if (size) yon_char_parsed_free(parsed,size);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0);
}
free(active);
}
void on_locale_changed(GtkWidget *,main_window *);
@ -2226,13 +2230,18 @@ void on_gparted_open(){
gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets);
void on_exit_accepted(GtkWidget *,main_window *widgets);
void on_exit_accepted(GtkWidget *,main_window *widgets){
void on_exit_accepted(GtkWidget *,dictionary *dict);
void on_exit_accepted(GtkWidget *,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
confirmation_window *window = yon_dictionary_get_data(dict->first->next,confirmation_window*);
if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread);
}
main_config.exit_accepted=1;
g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event",widgets->MainWindow,NULL);
free(window);
yon_dictionary_free_all(dict,NULL);
free(dict);
gtk_widget_destroy(widgets->MainWindow);
}
@ -2244,7 +2253,10 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),widgets);
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),dict);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow));
@ -2532,9 +2544,15 @@ main_window *yon_main_window_complete(){
int width = gdk_pixbuf_get_width(widgets->regions_original);
int height = gdk_pixbuf_get_height(widgets->regions_original);
widgets->region_height_mult = (float)height/width;
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR));
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR));
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),gdk_pixbuf_scale_simple(widgets->slides_original[0],600,400,GDK_INTERP_BILINEAR));
GdkPixbuf *pix = gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),pix);
g_object_unref(pix);
pix = gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),pix);
g_object_unref(pix);
pix = gdk_pixbuf_scale_simple(widgets->slides_original[0],600,400,GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),pix);
g_object_unref(pix);
int langsize;
config_str lang = default_langs(&langsize);
@ -2579,11 +2597,14 @@ main_window *yon_main_window_complete(){
gtk_tree_store_append(widgets->LayoutList,&iter,NULL);
gtk_tree_store_set(widgets->LayoutList,&iter,0,layout[0],1,_(layout[1]),2,1,-1);
yon_char_parsed_free(layout,layout_size);
layout = yon_config_load(get_layouts_local_command(layout_id),&layout_size);
char *command = get_layouts_local_command(layout_id);
config_str layout_local = yon_config_load(command,&layout_size);
free(command);
free(layout_id);
for (int j=0;j<layout_size;j++){
yon_char_remove_last_symbol(layout[j],'\n');
yon_char_remove_last_symbol(layout_local[j],'\n');
int parsed_size;
config_str layouts_parsed = yon_char_parse(layout[j],&parsed_size,"|");
config_str layouts_parsed = yon_char_parse(layout_local[j],&parsed_size,"|");
if (parsed_size){
gtk_tree_store_append(widgets->LayoutList,&itar,&iter);
gtk_tree_store_set(widgets->LayoutList,&itar,0,layouts_parsed[0],1,_(layouts_parsed[1]),2,1,3,0,-1);
@ -2593,7 +2614,7 @@ main_window *yon_main_window_complete(){
if (layout_size==-1) {
gtk_tree_store_set(widgets->LayoutList,&iter,2,1,-1);
}
yon_char_parsed_free(layout,layout_size);
yon_char_parsed_free(layout_local,layout_size);
}
}
yon_char_parsed_free(parsed,size);
@ -2603,6 +2624,7 @@ main_window *yon_main_window_complete(){
struct json_object *root;
struct json_object *blockdevices;
root = json_tokener_parse(string);
free(string);
json_object_object_get_ex(root, "blockdevices", &blockdevices);
for (long unsigned int i = 0; i < json_object_array_length(blockdevices); i++) {
struct json_object *device = json_object_array_get_idx(blockdevices, i);
@ -2616,6 +2638,7 @@ main_window *yon_main_window_complete(){
gtk_list_store_append(widgets->DevicesList,&iter);
gtk_list_store_set(widgets->DevicesList,&iter,0,json_object_get_string(path),1,json_object_get_string(model),2,json_object_get_string(serial),3,json_object_get_string(size),4,json_object_get_string(vendor),-1);
}
yon_char_parsed_free(parsed,size);
}
@ -2627,8 +2650,10 @@ main_window *yon_main_window_complete(){
if (module_size){
gtk_list_store_append(widgets->AdditionalSoftwareList,&iter);
gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,1,1,module_parsed[0],3,module_parsed[1],-1); //2,module_parsed[2]
yon_char_parsed_free(module_parsed,module_size);
}
}
if (size) yon_char_parsed_free(parsed,size);
config_str models = yon_config_load(get_models_command,&size);
for (int i=0;i<size;i+=2){
@ -2636,6 +2661,7 @@ main_window *yon_main_window_complete(){
models[i+1] = yon_char_divide_search(models[i+1],"\n",-1);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo),models[i],_(models[i+1]));
}
if (size) yon_char_parsed_free(models,size);
gtk_builder_connect_signals(builder,NULL);
yon_load_proceed(YON_CONFIG_DEFAULT);
yon_interface_update(widgets);
@ -2724,12 +2750,14 @@ int main(int argc, char *argv[]){
main_window *widgets = NULL;
widgets = yon_main_window_complete();
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
yon_window_config_load(config_path);
char *window_config_path = config_path;
yon_window_config_load(window_config_path);
free(window_config_path);
GtkCssProvider *css=gtk_css_provider_new();
gtk_css_provider_load_from_resource(css,CssPath);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css),
-1);
gtk_main();
free(widgets);
}
Loading…
Cancel
Save