# HG changeset patch # User gqview # Date 1113490577 0 # Node ID 64068b1bab890da6fe10c774ed336f7c7dd79322 # Parent d5f8f8a4d47bc815690e3e8ed6e5d38aaa10a225 Thu Apr 14 10:44:00 2005 John Ellis * 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. ##### diff -r d5f8f8a4d47b -r 64068b1bab89 ChangeLog --- a/ChangeLog Thu Apr 14 08:54:29 2005 +0000 +++ b/ChangeLog Thu Apr 14 14:56:17 2005 +0000 @@ -1,3 +1,10 @@ +Thu Apr 14 10:44:00 2005 John Ellis + + * 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 * pixbuf-renderer.c (pixbuf_renderer_move): Clear the correct draw diff -r d5f8f8a4d47b -r 64068b1bab89 TODO --- a/TODO Thu Apr 14 08:54:29 2005 +0000 +++ b/TODO Thu Apr 14 14:56:17 2005 +0000 @@ -31,9 +31,8 @@ > 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 - > speed up sorting image.. stage when sorting/merging cache list + d> speed up sorting image.. stage when sorting/merging cache list > time line view: diff -r d5f8f8a4d47b -r 64068b1bab89 src/cache.c --- a/src/cache.c Thu Apr 14 08:54:29 2005 +0000 +++ b/src/cache.c Thu Apr 14 14:56:17 2005 +0000 @@ -476,7 +476,11 @@ fclose(f); - 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; diff -r d5f8f8a4d47b -r 64068b1bab89 src/pan-view.c --- a/src/pan-view.c Thu Apr 14 08:54:29 2005 +0000 +++ b/src/pan-view.c Thu Apr 14 14:56:17 2005 +0000 @@ -546,6 +546,7 @@ 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; @@ -572,16 +573,13 @@ path = ((FileData *)pc)->path; if (path && strcmp(path, fd->path) == 0) { - GList *tmp; - 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; } else { @@ -589,6 +587,8 @@ } } } + + g_list_free(haystack); } /* @@ -1911,17 +1911,18 @@ 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 = filelist_sort(list, SORT_TIME, TRUE); 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); - 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; @@ -2132,17 +2133,18 @@ 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 = filelist_sort(list, SORT_TIME, TRUE); 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); - 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;