Fixed crash, caused by multiple updates

pull/39/head
parent c1ea18ac23
commit a3bb0c6e20

@ -200,6 +200,10 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
yon_tag_add(GTK_BOX(tab->install_tags_box),UNKNOWN_LABEL,"tag_grey",NULL);
}
gtk_widget_show(tab->main_box);
g_mutex_lock(&main_config.update_mutex);
main_config.update_active--;
g_mutex_unlock(&main_config.update_mutex);
return G_SOURCE_REMOVE;
}
@ -212,6 +216,9 @@ char *yon_package_string_set(char *target){
}
void *yon_tab_set_installed(kernels_tab *tab){
g_mutex_lock(&main_config.update_mutex);
main_config.update_active++;
g_mutex_unlock(&main_config.update_mutex);
char *target_module = yon_package_string_set(tab->module);
char *target_package = yon_package_string_set(tab->package);
char *check_install_command = NULL;
@ -259,9 +266,6 @@ void *yon_interface_update(main_window *widgets){
lock=main_config.update_active;
g_mutex_unlock(&main_config.update_mutex);
if (!lock){
g_mutex_lock(&main_config.update_mutex);
main_config.update_active=1;
g_mutex_unlock(&main_config.update_mutex);
yon_ubl_status_box_render(LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
{
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelsPackageBox));
@ -313,10 +317,6 @@ void *yon_interface_update(main_window *widgets){
break;
}
textdomain(LocaleName);
g_mutex_lock(&main_config.update_mutex);
main_config.update_active=0;
g_mutex_unlock(&main_config.update_mutex);
}
return NULL;
}
@ -855,6 +855,11 @@ void config_init(){
}
void on_update_clicked(GtkWidget *, main_window *widgets){
int lock=0;
g_mutex_lock(&main_config.update_mutex);
lock = main_config.update_active;
g_mutex_unlock(&main_config.update_mutex);
if (!lock){
yon_dictionary_free_all(main_config.kernel_tabs,free);
yon_dictionary_free_all(main_config.addition_tabs,free);
main_config.kernel_tabs=NULL;
@ -862,6 +867,7 @@ void on_update_clicked(GtkWidget *, main_window *widgets){
yon_interface_update(widgets);
}
}
void on_info_clicked(GtkWidget *self, char *, kernels_tab *tab){
info_window *window = yon_info_window_new();

Loading…
Cancel
Save