Fixed pacman DB sync

pull/385/head
parent b21db72c84
commit b5f59ddcfc

@ -349,8 +349,8 @@ void yon_os_components_init(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter; GList *iter;
for (iter=list;iter;iter=iter->next){ for (iter=list;iter;iter=iter->next){
os_row *row = g_object_get_data(iter->data,"kernel_row"); // os_row *row = g_object_get_data(iter->data,"kernel_row");
free(row); // free(row);
gtk_widget_destroy(GTK_WIDGET(iter->data)); gtk_widget_destroy(GTK_WIDGET(iter->data));
} }
if (!gtk_widget_get_parent(widgets->OSSpinner)) if (!gtk_widget_get_parent(widgets->OSSpinner))

@ -236,6 +236,17 @@ void on_configuration_hub_open(GtkFlowBox *,GtkFlowBoxChild *child, main_window
config_hub_icon *cur_icon = g_object_get_data(G_OBJECT(child),"config_hub_icon"); config_hub_icon *cur_icon = g_object_get_data(G_OBJECT(child),"config_hub_icon");
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),cur_icon->page); gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),cur_icon->page);
switch(cur_icon->page){
case YON_PAGE_OS_COMPONENTS:
case YON_PAGE_KERNEL:
case YON_PAGE_KERNEL_ADDON:
case YON_PAGE_PACMAN_SOFTWARE:
case YON_PAGE_SOFTWARE:
case YON_PAGE_PACKAGES:
on_status_button_update(NULL,widgets);
break;
default: break;
};
yon_page_init(widgets,cur_icon->page); yon_page_init(widgets,cur_icon->page);
yon_page_update(widgets); yon_page_update(widgets);
} }

@ -492,23 +492,23 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
yon_configuration_hub_init(widgets); yon_configuration_hub_init(widgets);
break; break;
case YON_PAGE_OS_COMPONENTS: case YON_PAGE_OS_COMPONENTS:
on_status_update(NULL,widgets); // on_status_update(NULL,widgets);
yon_os_components_init(widgets); yon_os_components_init(widgets);
break; break;
case YON_PAGE_KERNEL: case YON_PAGE_KERNEL:
on_status_update(NULL,widgets); // on_status_update(NULL,widgets);
yon_kernel_init(widgets); yon_kernel_init(widgets);
break; break;
case YON_PAGE_KERNEL_ADDON: case YON_PAGE_KERNEL_ADDON:
on_status_update(NULL,widgets); // on_status_update(NULL,widgets);
yon_kernel_addon_init(widgets); yon_kernel_addon_init(widgets);
break; break;
case YON_PAGE_SOFTWARE: case YON_PAGE_SOFTWARE:
on_status_update(NULL,widgets); // on_status_update(NULL,widgets);
yon_software_init(widgets); yon_software_init(widgets);
break; break;
case YON_PAGE_PACMAN_SOFTWARE: case YON_PAGE_PACMAN_SOFTWARE:
on_status_update(NULL,widgets); // on_status_update(NULL,widgets);
yon_pacman_init(widgets); yon_pacman_init(widgets);
break; break;
case YON_PAGE_REGION: case YON_PAGE_REGION:
@ -536,7 +536,7 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
yon_network_init(widgets); yon_network_init(widgets);
break; break;
case YON_PAGE_PACKAGES: case YON_PAGE_PACKAGES:
on_status_update(NULL,widgets); // on_status_update(NULL,widgets);
yon_packages_tab_init(widgets); yon_packages_tab_init(widgets);
break; break;
case YON_PAGE_INSTALL_ADVANCED: case YON_PAGE_INSTALL_ADVANCED:
@ -592,6 +592,17 @@ void on_page_next_clicked(GtkWidget *, main_window *widgets){
page = yon_page_get_next(widgets,page); page = yon_page_get_next(widgets,page);
if ((int)page!=-1){ if ((int)page!=-1){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page); gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page);
switch(page){
case YON_PAGE_OS_COMPONENTS:
case YON_PAGE_KERNEL:
case YON_PAGE_KERNEL_ADDON:
case YON_PAGE_PACMAN_SOFTWARE:
case YON_PAGE_SOFTWARE:
case YON_PAGE_PACKAGES:
on_status_button_update(NULL,widgets);
break;
default: break;
};
yon_page_init(widgets,page); yon_page_init(widgets,page);
} }
yon_page_update(widgets); yon_page_update(widgets);

@ -320,10 +320,8 @@ void yon_update_page(main_window *widgets){
yon_packages_update(); yon_packages_update();
while(gtk_events_pending()) gtk_main_iteration(); while(gtk_events_pending()) gtk_main_iteration();
yon_page_init(widgets,page); yon_page_init(widgets,page);
gtk_widget_set_sensitive(widgets->KernelPacmanStatusButton,1); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->db_lock_monitor),G_CALLBACK(yon_db_unlock_update),widgets);
gtk_widget_set_sensitive(widgets->PacmanSoftwareStatusButton,1); on_status_update(NULL,widgets);
gtk_widget_set_sensitive(widgets->KernelAddonPacmanStatusButton,1);
gtk_widget_set_sensitive(widgets->AdditionalComponentsStatusButton,1);
} }
void *yon_db_update(main_window *widgets){ void *yon_db_update(main_window *widgets){
@ -333,10 +331,7 @@ void *yon_db_update(main_window *widgets){
} }
void on_status_button_update(GtkWidget *, main_window *widgets){ void on_status_button_update(GtkWidget *, main_window *widgets){
gtk_widget_set_sensitive(widgets->KernelPacmanStatusButton,0); g_signal_handlers_block_by_func(G_OBJECT(widgets->db_lock_monitor),G_CALLBACK(yon_db_unlock_update),widgets);
gtk_widget_set_sensitive(widgets->PacmanSoftwareStatusButton,0);
gtk_widget_set_sensitive(widgets->KernelAddonPacmanStatusButton,0);
gtk_widget_set_sensitive(widgets->AdditionalComponentsStatusButton,0);
pthread_t tid=0; pthread_t tid=0;
pthread_create(&tid,NULL,(void*(*)(void*))yon_db_update,widgets); pthread_create(&tid,NULL,(void*(*)(void*))yon_db_update,widgets);
@ -393,6 +388,24 @@ void yon_scroll_block_for_builder(GtkBuilder *builder){
g_slist_free(list); g_slist_free(list);
} }
void yon_db_lock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets){
if (!access(pacman_lock_path,F_OK)){
gtk_widget_set_sensitive(widgets->KernelPacmanStatusButton,0);
gtk_widget_set_sensitive(widgets->PacmanSoftwareStatusButton,0);
gtk_widget_set_sensitive(widgets->KernelAddonPacmanStatusButton,0);
gtk_widget_set_sensitive(widgets->AdditionalComponentsStatusButton,0);
}
}
void yon_db_unlock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets){
if (access(pacman_lock_path,F_OK)){
gtk_widget_set_sensitive(widgets->KernelPacmanStatusButton,1);
gtk_widget_set_sensitive(widgets->PacmanSoftwareStatusButton,1);
gtk_widget_set_sensitive(widgets->KernelAddonPacmanStatusButton,1);
gtk_widget_set_sensitive(widgets->AdditionalComponentsStatusButton,1);
}
}
void yon_main_window_create(main_window *widgets){ void yon_main_window_create(main_window *widgets){
__attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8"); __attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8");
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
@ -723,6 +736,15 @@ void yon_main_window_create(main_window *widgets){
widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL); widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
main_config.status_box = widgets->StatusBox; main_config.status_box = widgets->StatusBox;
GError *err = NULL;
GFile *file_desc = g_file_new_for_path(pacman_lock_dir_path);
widgets->db_lock_monitor = g_file_monitor_directory(file_desc,G_FILE_MONITOR_NONE,NULL,&err);
if (err){
printf("%s\n",err->message);
}
g_signal_connect(G_OBJECT(widgets->db_lock_monitor),"changed",G_CALLBACK(yon_db_lock_update),widgets);
g_signal_connect(G_OBJECT(widgets->db_lock_monitor),"changed",G_CALLBACK(yon_db_unlock_update),widgets);
} }
g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets); g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets);
GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2"); GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2");
@ -745,11 +767,6 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->KernelPacmanStatusButton),"clicked",G_CALLBACK(on_status_button_update),widgets); g_signal_connect(G_OBJECT(widgets->KernelPacmanStatusButton),"clicked",G_CALLBACK(on_status_button_update),widgets);
g_signal_connect(G_OBJECT(widgets->KernelAddonPacmanStatusButton),"clicked",G_CALLBACK(on_status_button_update),widgets); g_signal_connect(G_OBJECT(widgets->KernelAddonPacmanStatusButton),"clicked",G_CALLBACK(on_status_button_update),widgets);
g_signal_connect(G_OBJECT(widgets->PacmanSoftwareStatusButton),"clicked",G_CALLBACK(on_status_button_update),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareStatusButton),"clicked",G_CALLBACK(on_status_button_update),widgets);
g_signal_connect(G_OBJECT(widgets->PackagesStatusButton),"clicked",G_CALLBACK(on_status_update),widgets);
g_signal_connect(G_OBJECT(widgets->AdditionalComponentsStatusButton),"clicked",G_CALLBACK(on_status_update),widgets);
g_signal_connect(G_OBJECT(widgets->KernelPacmanStatusButton),"clicked",G_CALLBACK(on_status_update),widgets);
g_signal_connect(G_OBJECT(widgets->KernelAddonPacmanStatusButton),"clicked",G_CALLBACK(on_status_update),widgets);
g_signal_connect(G_OBJECT(widgets->PacmanSoftwareStatusButton),"clicked",G_CALLBACK(on_status_update),widgets);
g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets); g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets);
g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets); g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets);

@ -95,6 +95,9 @@
#define arrow_left_icon_path "com.ublinux.ubinstall-gtk.arrow-left-symbolic" #define arrow_left_icon_path "com.ublinux.ubinstall-gtk.arrow-left-symbolic"
#define arrow_right_icon_path "com.ublinux.ubinstall-gtk.arrow-right-symbolic" #define arrow_right_icon_path "com.ublinux.ubinstall-gtk.arrow-right-symbolic"
#define pacman_lock_path "/var/lib/pacman/db.lck"
#define pacman_lock_dir_path "/var/lib/pacman/"
#define slide_repeat_path "/com/ublinux/images/slide-1.png", \ #define slide_repeat_path "/com/ublinux/images/slide-1.png", \
"/com/ublinux/images/slide-2.png", \ "/com/ublinux/images/slide-2.png", \
"/com/ublinux/images/slide-3.png", \ "/com/ublinux/images/slide-3.png", \
@ -852,6 +855,8 @@ typedef struct
GtkWidget *root_button; GtkWidget *root_button;
GtkWidget *debug_button; GtkWidget *debug_button;
GFileMonitor *db_lock_monitor;
} main_window; } main_window;
enum ADVANCED_PART_TYPE enum ADVANCED_PART_TYPE
@ -1636,3 +1641,5 @@ void yon_container_stop_loading(GtkWidget *target);
void yon_status_thread_update_inactive(main_window *widgets); void yon_status_thread_update_inactive(main_window *widgets);
void yon_status_thread_update_active(main_window *widgets); void yon_status_thread_update_active(main_window *widgets);
void *yon_status_thread_update(main_window *widgets); void *yon_status_thread_update(main_window *widgets);
void yon_db_lock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets);
void yon_db_unlock_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets);
Loading…
Cancel
Save