diff src/filedata.c @ 1425:80462be81410

fixed keyword to mark connection
author nadvornik
date Fri, 13 Mar 2009 09:03:06 +0000
parents 6933974f0885
children cf4029d10d38
line wrap: on
line diff
--- a/src/filedata.c	Thu Mar 12 22:44:21 2009 +0000
+++ b/src/filedata.c	Fri Mar 13 09:03:06 2009 +0000
@@ -1090,6 +1090,7 @@
 static FileDataGetMarkFunc file_data_get_mark_func[FILEDATA_MARKS_SIZE];
 static FileDataSetMarkFunc file_data_set_mark_func[FILEDATA_MARKS_SIZE];
 static gpointer file_data_mark_func_data[FILEDATA_MARKS_SIZE];
+static GDestroyNotify file_data_destroy_mark_func[FILEDATA_MARKS_SIZE];
 
 gboolean file_data_get_mark(FileData *fd, gint n)
 {
@@ -1189,20 +1190,23 @@
 	file_data_send_notification(fd, NOTIFY_TYPE_INTERNAL);
 }
 
-gboolean file_data_register_mark_func(gint n, FileDataGetMarkFunc get_mark_func, FileDataSetMarkFunc set_mark_func, gpointer data)
+gboolean file_data_register_mark_func(gint n, FileDataGetMarkFunc get_mark_func, FileDataSetMarkFunc set_mark_func, gpointer data, GDestroyNotify notify)
 {
 	if (n < 0 || n >= FILEDATA_MARKS_SIZE) return FALSE;
+	
+	if (file_data_destroy_mark_func[n]) (file_data_destroy_mark_func[n])(file_data_mark_func_data[n]);
 		
 	file_data_get_mark_func[n] = get_mark_func;
         file_data_set_mark_func[n] = set_mark_func;
         file_data_mark_func_data[n] = data;
-        
+        file_data_destroy_mark_func[n] = notify;
+
         if (get_mark_func)
-    		{
-    		/* this effectively changes all known files */
-    		g_hash_table_foreach(file_data_pool, file_data_notify_mark_func, NULL);
-    		}
-        
+		{
+		/* this effectively changes all known files */
+		g_hash_table_foreach(file_data_pool, file_data_notify_mark_func, NULL);
+		}
+
         return TRUE;
 }