Loading src/imlib.c +33 −17 Original line number Diff line number Diff line Loading @@ -60,10 +60,7 @@ int xinerama_screen; int num_xinerama_screens; #endif /* HAVE_LIBXINERAMA */ #ifdef HAVE_LIBCURL // TODO use cache for dcraw and magick conversion results as well gib_hash* http_cache = NULL; #endif gib_hash* conversion_cache = NULL; int childpid = 0; Loading Loading @@ -263,14 +260,14 @@ int feh_load_image(Imlib_Image * im, feh_file * file) file->ed = exif_get_data(tmpname); #endif } if ((image_source != SRC_HTTP) || (!opt.keep_http && !opt.use_http_cache)) if (!opt.use_conversion_cache && ((image_source != SRC_HTTP) || !opt.keep_http)) unlink(tmpname); // keep_http already performs an add_file_to_rm_filelist call else if (opt.use_http_cache && !opt.keep_http) else if (opt.use_conversion_cache && !opt.keep_http) // add_file_to_rm_filelist duplicates tmpname add_file_to_rm_filelist(tmpname); if (image_source != SRC_HTTP && !opt.use_http_cache) if (image_source != SRC_HTTP && !opt.use_conversion_cache) free(tmpname); } Loading Loading @@ -365,14 +362,12 @@ void feh_reload_image(winwidget w, int resize, int force_new) if (force_new) winwidget_free_image(w); #ifdef HAVE_LIBCURL // if it's an external image, our own cache will also get in your way char *sfn; if (opt.use_http_cache && (sfn = gib_hash_get(http_cache, FEH_FILE(w->file->data)->filename)) != NULL) { if (opt.use_conversion_cache && (sfn = gib_hash_get(conversion_cache, FEH_FILE(w->file->data)->filename)) != NULL) { free(sfn); gib_hash_set(http_cache, FEH_FILE(w->file->data)->filename, NULL); gib_hash_set(conversion_cache, FEH_FILE(w->file->data)->filename, NULL); } #endif if ((feh_load_image(&tmp, FEH_FILE(w->file->data))) == 0) { if (force_new) Loading Loading @@ -450,6 +445,13 @@ static char *feh_dcraw_load_image(char *filename) char *sfn; int fd = -1; if (opt.use_conversion_cache) { if (!conversion_cache) conversion_cache = gib_hash_new(); if ((sfn = gib_hash_get(conversion_cache, filename)) != NULL) return sfn; } basename = strrchr(filename, '/'); if (basename == NULL) Loading Loading @@ -500,6 +502,9 @@ static char *feh_dcraw_load_image(char *filename) weprintf("%s - Conversion took too long, skipping", filename); } if ((sfn != NULL) && opt.use_conversion_cache) gib_hash_set(conversion_cache, filename, sfn); return sfn; } Loading @@ -514,6 +519,13 @@ static char *feh_magick_load_image(char *filename) int status; char created_tempdir = 0; if (opt.use_conversion_cache) { if (!conversion_cache) conversion_cache = gib_hash_new(); if ((sfn = gib_hash_get(conversion_cache, filename)) != NULL) return sfn; } basename = strrchr(filename, '/'); if (basename == NULL) Loading Loading @@ -632,6 +644,10 @@ static char *feh_magick_load_image(char *filename) } free(argv_fn); if ((sfn != NULL) && opt.use_conversion_cache) gib_hash_set(conversion_cache, filename, sfn); return sfn; } Loading Loading @@ -671,10 +687,10 @@ static char *feh_http_load_image(char *url) char *basename; char *path = NULL; if (opt.use_http_cache) { if (!http_cache) http_cache = gib_hash_new(); if ((sfn = gib_hash_get(http_cache, url)) != NULL) if (opt.use_conversion_cache) { if (!conversion_cache) conversion_cache = gib_hash_new(); if ((sfn = gib_hash_get(conversion_cache, url)) != NULL) return sfn; } Loading Loading @@ -750,8 +766,8 @@ static char *feh_http_load_image(char *url) free(ebuff); fclose(sfp); if (opt.use_http_cache) gib_hash_set(http_cache, url, sfn); if (opt.use_conversion_cache) gib_hash_set(conversion_cache, url, sfn); return sfn; } else { weprintf("open url: fdopen failed:"); Loading src/options.c +3 −3 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ void init_parse_options(int argc, char **argv) #ifdef HAVE_INOTIFY opt.auto_reload = 1; #endif /* HAVE_INOTIFY */ opt.use_http_cache = 1; opt.use_conversion_cache = 1; feh_getopt_theme(argc, argv); Loading Loading @@ -525,7 +525,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) break; case 'R': opt.reload = atof(optarg); opt.use_http_cache = 0; opt.use_conversion_cache = 0; #ifdef HAVE_INOTIFY opt.auto_reload = 0; #endif Loading Loading @@ -831,7 +831,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) opt.x11_class = estrdup(optarg); break; case 250: opt.use_http_cache = 0; opt.use_conversion_cache = 0; break; default: break; Loading src/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ struct __fehoptions { unsigned char aspect; unsigned char stretch; unsigned char keep_http; unsigned char use_http_cache; unsigned char use_conversion_cache; unsigned char borderless; unsigned char randomize; unsigned char jump_on_resort; Loading Loading
src/imlib.c +33 −17 Original line number Diff line number Diff line Loading @@ -60,10 +60,7 @@ int xinerama_screen; int num_xinerama_screens; #endif /* HAVE_LIBXINERAMA */ #ifdef HAVE_LIBCURL // TODO use cache for dcraw and magick conversion results as well gib_hash* http_cache = NULL; #endif gib_hash* conversion_cache = NULL; int childpid = 0; Loading Loading @@ -263,14 +260,14 @@ int feh_load_image(Imlib_Image * im, feh_file * file) file->ed = exif_get_data(tmpname); #endif } if ((image_source != SRC_HTTP) || (!opt.keep_http && !opt.use_http_cache)) if (!opt.use_conversion_cache && ((image_source != SRC_HTTP) || !opt.keep_http)) unlink(tmpname); // keep_http already performs an add_file_to_rm_filelist call else if (opt.use_http_cache && !opt.keep_http) else if (opt.use_conversion_cache && !opt.keep_http) // add_file_to_rm_filelist duplicates tmpname add_file_to_rm_filelist(tmpname); if (image_source != SRC_HTTP && !opt.use_http_cache) if (image_source != SRC_HTTP && !opt.use_conversion_cache) free(tmpname); } Loading Loading @@ -365,14 +362,12 @@ void feh_reload_image(winwidget w, int resize, int force_new) if (force_new) winwidget_free_image(w); #ifdef HAVE_LIBCURL // if it's an external image, our own cache will also get in your way char *sfn; if (opt.use_http_cache && (sfn = gib_hash_get(http_cache, FEH_FILE(w->file->data)->filename)) != NULL) { if (opt.use_conversion_cache && (sfn = gib_hash_get(conversion_cache, FEH_FILE(w->file->data)->filename)) != NULL) { free(sfn); gib_hash_set(http_cache, FEH_FILE(w->file->data)->filename, NULL); gib_hash_set(conversion_cache, FEH_FILE(w->file->data)->filename, NULL); } #endif if ((feh_load_image(&tmp, FEH_FILE(w->file->data))) == 0) { if (force_new) Loading Loading @@ -450,6 +445,13 @@ static char *feh_dcraw_load_image(char *filename) char *sfn; int fd = -1; if (opt.use_conversion_cache) { if (!conversion_cache) conversion_cache = gib_hash_new(); if ((sfn = gib_hash_get(conversion_cache, filename)) != NULL) return sfn; } basename = strrchr(filename, '/'); if (basename == NULL) Loading Loading @@ -500,6 +502,9 @@ static char *feh_dcraw_load_image(char *filename) weprintf("%s - Conversion took too long, skipping", filename); } if ((sfn != NULL) && opt.use_conversion_cache) gib_hash_set(conversion_cache, filename, sfn); return sfn; } Loading @@ -514,6 +519,13 @@ static char *feh_magick_load_image(char *filename) int status; char created_tempdir = 0; if (opt.use_conversion_cache) { if (!conversion_cache) conversion_cache = gib_hash_new(); if ((sfn = gib_hash_get(conversion_cache, filename)) != NULL) return sfn; } basename = strrchr(filename, '/'); if (basename == NULL) Loading Loading @@ -632,6 +644,10 @@ static char *feh_magick_load_image(char *filename) } free(argv_fn); if ((sfn != NULL) && opt.use_conversion_cache) gib_hash_set(conversion_cache, filename, sfn); return sfn; } Loading Loading @@ -671,10 +687,10 @@ static char *feh_http_load_image(char *url) char *basename; char *path = NULL; if (opt.use_http_cache) { if (!http_cache) http_cache = gib_hash_new(); if ((sfn = gib_hash_get(http_cache, url)) != NULL) if (opt.use_conversion_cache) { if (!conversion_cache) conversion_cache = gib_hash_new(); if ((sfn = gib_hash_get(conversion_cache, url)) != NULL) return sfn; } Loading Loading @@ -750,8 +766,8 @@ static char *feh_http_load_image(char *url) free(ebuff); fclose(sfp); if (opt.use_http_cache) gib_hash_set(http_cache, url, sfn); if (opt.use_conversion_cache) gib_hash_set(conversion_cache, url, sfn); return sfn; } else { weprintf("open url: fdopen failed:"); Loading
src/options.c +3 −3 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ void init_parse_options(int argc, char **argv) #ifdef HAVE_INOTIFY opt.auto_reload = 1; #endif /* HAVE_INOTIFY */ opt.use_http_cache = 1; opt.use_conversion_cache = 1; feh_getopt_theme(argc, argv); Loading Loading @@ -525,7 +525,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) break; case 'R': opt.reload = atof(optarg); opt.use_http_cache = 0; opt.use_conversion_cache = 0; #ifdef HAVE_INOTIFY opt.auto_reload = 0; #endif Loading Loading @@ -831,7 +831,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) opt.x11_class = estrdup(optarg); break; case 250: opt.use_http_cache = 0; opt.use_conversion_cache = 0; break; default: break; Loading
src/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ struct __fehoptions { unsigned char aspect; unsigned char stretch; unsigned char keep_http; unsigned char use_http_cache; unsigned char use_conversion_cache; unsigned char borderless; unsigned char randomize; unsigned char jump_on_resort; Loading