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 *iter;
for (iter=list;iter;iter=iter->next){
os_row *row = g_object_get_data(iter->data,"kernel_row");
free(row);
// os_row *row = g_object_get_data(iter->data,"kernel_row");
// free(row);
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
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");
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_update(widgets);
}

@ -492,23 +492,23 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
yon_configuration_hub_init(widgets);
break;
case YON_PAGE_OS_COMPONENTS:
on_status_update(NULL,widgets);
// on_status_update(NULL,widgets);
yon_os_components_init(widgets);
break;
case YON_PAGE_KERNEL:
on_status_update(NULL,widgets);
// on_status_update(NULL,widgets);
yon_kernel_init(widgets);
break;
case YON_PAGE_KERNEL_ADDON:
on_status_update(NULL,widgets);
// on_status_update(NULL,widgets);
yon_kernel_addon_init(widgets);
break;
case YON_PAGE_SOFTWARE:
on_status_update(NULL,widgets);
// on_status_update(NULL,widgets);
yon_software_init(widgets);
break;
case YON_PAGE_PACMAN_SOFTWARE:
on_status_update(NULL,widgets);
// on_status_update(NULL,widgets);
yon_pacman_init(widgets);
break;
case YON_PAGE_REGION:
@ -536,7 +536,7 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
yon_network_init(widgets);
break;
case YON_PAGE_PACKAGES:
on_status_update(NULL,widgets);
// on_status_update(NULL,widgets);
yon_packages_tab_init(widgets);
break;
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);
if ((int)page!=-1){
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_update(widgets);

@ -320,10 +320,8 @@ void yon_update_page(main_window *widgets){
yon_packages_update();
while(gtk_events_pending()) gtk_main_iteration();
yon_page_init(widgets,page);
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);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->db_lock_monitor),G_CALLBACK(yon_db_unlock_update),widgets);
on_status_update(NULL,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){
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);
g_signal_handlers_block_by_func(G_OBJECT(widgets->db_lock_monitor),G_CALLBACK(yon_db_unlock_update),widgets);
pthread_t tid=0;
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);
}
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){
__attribute__((unused)) char *locale = setlocale(LC_ALL, "en_US.UTF-8");
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);
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);
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->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->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->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_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", \
"/com/ublinux/images/slide-2.png", \
"/com/ublinux/images/slide-3.png", \
@ -852,6 +855,8 @@ typedef struct
GtkWidget *root_button;
GtkWidget *debug_button;
GFileMonitor *db_lock_monitor;
} main_window;
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_active(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