comparison src/filedata.c @ 965:cbdabb499684

keep files with non-zero marks in memory
author nadvornik
date Sat, 16 Aug 2008 20:57:40 +0000
parents ba1d3c4bc0cd
children c24a297efbef
comparison
equal deleted inserted replaced
964:ba1d3c4bc0cd 965:cbdabb499684
1059 return !!(fd->marks & (1 << n)); 1059 return !!(fd->marks & (1 << n));
1060 } 1060 }
1061 1061
1062 void file_data_set_mark(FileData *fd, gint n, gboolean value) 1062 void file_data_set_mark(FileData *fd, gint n, gboolean value)
1063 { 1063 {
1064 guint old = fd->marks;
1064 if (!value == !(fd->marks & (1 << n))) return; 1065 if (!value == !(fd->marks & (1 << n))) return;
1065 1066
1066 fd->marks = fd->marks ^ (1 << n); 1067 fd->marks = fd->marks ^ (1 << n);
1068
1069 if (old && !fd->marks) /* keep files with non-zero marks in memory */
1070 {
1071 file_data_unref(fd);
1072 }
1073 else if (!old && fd->marks)
1074 {
1075 file_data_ref(fd);
1076 }
1077
1067 file_data_increment_version(fd); 1078 file_data_increment_version(fd);
1068 file_data_send_notification(fd, NOTIFY_TYPE_INTERNAL); 1079 file_data_send_notification(fd, NOTIFY_TYPE_INTERNAL);
1069 } 1080 }
1070 1081
1071 gboolean file_data_filter_marks(FileData *fd, guint filter) 1082 gboolean file_data_filter_marks(FileData *fd, guint filter)