Mercurial > geeqie
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 { |