comparison src/layout.c @ 791:6d65167764ea

realtime file monitor
author nadvornik
date Fri, 06 Jun 2008 21:50:09 +0000
parents a2209b1f769d
children 0be132a51f51
comparison
equal deleted inserted replaced
790:436674261840 791:6d65167764ea
935 return TRUE; 935 return TRUE;
936 } 936 }
937 937
938 if (isdir(fd->path)) 938 if (isdir(fd->path))
939 { 939 {
940 file_data_unref(lw->dir_fd); 940 if (lw->dir_fd)
941 {
942 file_data_unregister_real_time_monitor(lw->dir_fd);
943 file_data_unref(lw->dir_fd);
944 }
941 lw->dir_fd = file_data_ref(fd); 945 lw->dir_fd = file_data_ref(fd);
946 file_data_register_real_time_monitor(fd);
942 } 947 }
943 else 948 else
944 { 949 {
945 gchar *base; 950 gchar *base;
946 951
949 { 954 {
950 g_free(base); 955 g_free(base);
951 } 956 }
952 else if (isdir(base)) 957 else if (isdir(base))
953 { 958 {
954 file_data_unref(lw->dir_fd); 959 if (lw->dir_fd)
960 {
961 file_data_unregister_real_time_monitor(lw->dir_fd);
962 file_data_unref(lw->dir_fd);
963 }
955 lw->dir_fd = file_data_new_simple(base); 964 lw->dir_fd = file_data_new_simple(base);
965 file_data_register_real_time_monitor(lw->dir_fd);
956 g_free(base); 966 g_free(base);
957 } 967 }
958 else 968 else
959 { 969 {
960 g_free(base); 970 g_free(base);
1606 1616
1607 layout_image_slideshow_stop(lw); 1617 layout_image_slideshow_stop(lw);
1608 layout_image_full_screen_stop(lw); 1618 layout_image_full_screen_stop(lw);
1609 1619
1610 dir_fd = lw->dir_fd; 1620 dir_fd = lw->dir_fd;
1621 file_data_unregister_real_time_monitor(lw->dir_fd);
1611 lw->dir_fd = NULL; 1622 lw->dir_fd = NULL;
1612 lw->image = NULL; 1623 lw->image = NULL;
1613 lw->utility_box = NULL; 1624 lw->utility_box = NULL;
1614 1625
1615 layout_geometry_get_dividers(lw, &lw->div_h, &lw->div_v); 1626 layout_geometry_get_dividers(lw, &lw->div_h, &lw->div_v);
1824 { 1835 {
1825 if (!lw) return; 1836 if (!lw) return;
1826 1837
1827 layout_window_list = g_list_remove(layout_window_list, lw); 1838 layout_window_list = g_list_remove(layout_window_list, lw);
1828 1839
1829 if (lw->last_time_id != -1) 1840
1830 {
1831 g_source_remove(lw->last_time_id);
1832 }
1833
1834 layout_bars_close(lw); 1841 layout_bars_close(lw);
1835 1842
1836 gtk_widget_destroy(lw->window); 1843 gtk_widget_destroy(lw->window);
1837 1844
1838 file_data_unref(lw->dir_fd); 1845 if (lw->dir_fd)
1846 {
1847 file_data_unregister_real_time_monitor(lw->dir_fd);
1848 file_data_unref(lw->dir_fd);
1849 }
1839 1850
1840 g_free(lw); 1851 g_free(lw);
1841 } 1852 }
1842 1853
1843 static gint layout_delete_cb(GtkWidget *widget, GdkEventAny *event, gpointer data) 1854 static gint layout_delete_cb(GtkWidget *widget, GdkEventAny *event, gpointer data)
1977 gdk_pixbuf_unref(pixbuf); 1988 gdk_pixbuf_unref(pixbuf);
1978 } 1989 }
1979 1990
1980 /* set up the time stat timeout */ 1991 /* set up the time stat timeout */
1981 lw->last_version = 0; 1992 lw->last_version = 0;
1982 lw->last_time_id = g_timeout_add(5000, layout_check_for_update_cb, lw); 1993 // lw->last_time_id = g_timeout_add(5000, layout_check_for_update_cb, lw);
1983 1994
1984 if (geometry) 1995 if (geometry)
1985 { 1996 {
1986 if (!gtk_window_parse_geometry(GTK_WINDOW(lw->window), geometry)) 1997 if (!gtk_window_parse_geometry(GTK_WINDOW(lw->window), geometry))
1987 { 1998 {