diff src/layout.c @ 791:6d65167764ea

realtime file monitor
author nadvornik
date Fri, 06 Jun 2008 21:50:09 +0000
parents a2209b1f769d
children 0be132a51f51
line wrap: on
line diff
--- a/src/layout.c	Fri Jun 06 20:59:03 2008 +0000
+++ b/src/layout.c	Fri Jun 06 21:50:09 2008 +0000
@@ -937,8 +937,13 @@
 
 	if (isdir(fd->path))
 		{
-		file_data_unref(lw->dir_fd);
+		if (lw->dir_fd)
+			{
+			file_data_unregister_real_time_monitor(lw->dir_fd);
+			file_data_unref(lw->dir_fd);
+			}
 		lw->dir_fd = file_data_ref(fd);
+		file_data_register_real_time_monitor(fd);
 		}
 	else
 		{
@@ -951,8 +956,13 @@
 			}
 		else if (isdir(base))
 			{
-			file_data_unref(lw->dir_fd);
+			if (lw->dir_fd)
+				{
+				file_data_unregister_real_time_monitor(lw->dir_fd);
+				file_data_unref(lw->dir_fd);
+				}
 			lw->dir_fd = file_data_new_simple(base);
+			file_data_register_real_time_monitor(lw->dir_fd);
 			g_free(base);
 			}
 		else
@@ -1608,6 +1618,7 @@
 	layout_image_full_screen_stop(lw);
 
 	dir_fd = lw->dir_fd;
+	file_data_unregister_real_time_monitor(lw->dir_fd);
 	lw->dir_fd = NULL;
 	lw->image = NULL;
 	lw->utility_box = NULL;
@@ -1826,16 +1837,16 @@
 
 	layout_window_list = g_list_remove(layout_window_list, lw);
 
-	if (lw->last_time_id != -1)
-		{
-		g_source_remove(lw->last_time_id);
-		}
-
+	
 	layout_bars_close(lw);
 
 	gtk_widget_destroy(lw->window);
 
-	file_data_unref(lw->dir_fd);
+	if (lw->dir_fd) 
+		{
+		file_data_unregister_real_time_monitor(lw->dir_fd);
+		file_data_unref(lw->dir_fd);
+		}
 
 	g_free(lw);
 }
@@ -1979,7 +1990,7 @@
 
 	/* set up the time stat timeout */
 	lw->last_version = 0;
-	lw->last_time_id = g_timeout_add(5000, layout_check_for_update_cb, lw);
+//	lw->last_time_id = g_timeout_add(5000, layout_check_for_update_cb, lw);
 
 	if (geometry)
 		{