* cache.c (cache_sim_data_load): Fix to return CacheData if any data
type exists.
* pan-view.c: Fix slow merging of embedded dates into file list;
includes optimizing pan_cache_sync_date and plugging a memory leak.
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
##### an offical release when making enhancements and translation updates. #####
+Thu Apr 14 10:44:00 2005 John Ellis <johne@verizon.net>
+
+ * cache.c (cache_sim_data_load): Fix to return CacheData if any data
+ type exists.
+ * pan-view.c: Fix slow merging of embedded dates into file list;
+ includes optimizing pan_cache_sync_date and plugging a memory leak.
+
Thu Apr 14 04:49:57 2005 John Ellis <johne@verizon.net>
* pixbuf-renderer.c (pixbuf_renderer_move): Clear the correct draw
Thu Apr 14 04:49:57 2005 John Ellis <johne@verizon.net>
* pixbuf-renderer.c (pixbuf_renderer_move): Clear the correct draw
> introduced bug (looks like clamp or rounding error)
d> optimize pixbuf_draw_triangle
> introduced bug (round error?)
> introduced bug (looks like clamp or rounding error)
d> optimize pixbuf_draw_triangle
> introduced bug (round error?)
- > does new pixbuf_draw_triangle contain line edge rounding error?
> check ref counting of image when redrawing after finish loading
> check ref counting of image when redrawing after finish loading
- > speed up sorting image.. stage when sorting/merging cache list
+ d> speed up sorting image.. stage when sorting/merging cache list
- if (!cd->dimensions && !cd->similarity)
+ if (!cd->dimensions &&
+ !cd->have_date &&
+ !cd->have_checksum &&
+ !cd->have_md5sum &&
+ !cd->similarity)
{
cache_sim_data_free(cd);
cd = NULL;
{
cache_sim_data_free(cd);
cd = NULL;
return (pw->cache_cl == NULL);
}
return (pw->cache_cl == NULL);
}
+/* This sync date function is optimized for lists with a common sort */
static void pan_cache_sync_date(PanWindow *pw, GList *list)
{
GList *haystack;
static void pan_cache_sync_date(PanWindow *pw, GList *list)
{
GList *haystack;
path = ((FileData *)pc)->path;
if (path && strcmp(path, fd->path) == 0)
{
path = ((FileData *)pc)->path;
if (path && strcmp(path, fd->path) == 0)
{
if (pc->cd && pc->cd->have_date && pc->cd->date >= 0)
{
fd->date = pc->cd->date;
}
if (pc->cd && pc->cd->have_date && pc->cd->date >= 0)
{
fd->date = pc->cd->date;
}
- tmp = needle;
- needle = needle->next;
- haystack = g_list_delete_link(haystack, tmp);
+ haystack = g_list_delete_link(haystack, needle);
+ needle = NULL;
+
+ g_list_free(haystack);
gint end_year = 0;
gint end_month = 0;
gint end_year = 0;
gint end_month = 0;
- pw->cache_list = filelist_sort(pw->cache_list, SORT_TIME, TRUE);
-
list = pan_window_layout_list(path, SORT_NONE, TRUE);
list = pan_window_layout_list(path, SORT_NONE, TRUE);
- list = filelist_sort(list, SORT_TIME, TRUE);
if (pw->cache_list && SORT_BY_EXIF_DATE)
{
if (pw->cache_list && SORT_BY_EXIF_DATE)
{
+ pw->cache_list = filelist_sort(pw->cache_list, SORT_NAME, TRUE);
+ list = filelist_sort(list, SORT_NAME, TRUE);
pan_cache_sync_date(pw, list);
pan_cache_sync_date(pw, list);
- list = filelist_sort(list, SORT_TIME, TRUE);
+ pw->cache_list = filelist_sort(pw->cache_list, SORT_TIME, TRUE);
+ list = filelist_sort(list, SORT_TIME, TRUE);
+
day_max = 0;
count = 0;
tc = 0;
day_max = 0;
count = 0;
tc = 0;
gint x_width;
gint y_height;
gint x_width;
gint y_height;
- pw->cache_list = filelist_sort(pw->cache_list, SORT_TIME, TRUE);
-
list = pan_window_layout_list(path, SORT_NONE, TRUE);
list = pan_window_layout_list(path, SORT_NONE, TRUE);
- list = filelist_sort(list, SORT_TIME, TRUE);
if (pw->cache_list && SORT_BY_EXIF_DATE)
{
if (pw->cache_list && SORT_BY_EXIF_DATE)
{
+ pw->cache_list = filelist_sort(pw->cache_list, SORT_NAME, TRUE);
+ list = filelist_sort(list, SORT_NAME, TRUE);
pan_cache_sync_date(pw, list);
pan_cache_sync_date(pw, list);
- list = filelist_sort(list, SORT_TIME, TRUE);
+ pw->cache_list = filelist_sort(pw->cache_list, SORT_TIME, TRUE);
+ list = filelist_sort(list, SORT_TIME, TRUE);
+
*width = PAN_FOLDER_BOX_BORDER * 2;
*height = PAN_FOLDER_BOX_BORDER * 2;
*width = PAN_FOLDER_BOX_BORDER * 2;
*height = PAN_FOLDER_BOX_BORDER * 2;