From 8419a8a8e2bdc01aa37e475d3a83a2a4a9a4bdf8 Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Sat, 28 Nov 2015 00:07:50 +0000 Subject: Load still images in the background --- src/main.c | 61 ++++++++++++++++++++++--------------------------------------- 1 file changed, 22 insertions(+), 39 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 3552a6b..78cc758 100644 --- a/src/main.c +++ b/src/main.c @@ -352,8 +352,14 @@ int main(int argc, char** argv) break; } - while(imv_navigator_has_changed(&nav)) { - const char* current_path = imv_navigator_get_current_path(&nav); + char *err_path = imv_loader_get_error(&ldr); + if(err_path) { + imv_navigator_remove_path(&nav, err_path); + free(err_path); + } + + if(imv_navigator_has_changed(&nav)) { + const char *current_path = imv_navigator_get_current_path(&nav); char title[256]; snprintf(&title[0], sizeof(title), "imv - [%i/%i] [LOADING] %s", nav.cur_path + 1, nav.num_paths, current_path); @@ -364,49 +370,26 @@ int main(int argc, char** argv) exit(1); } - if(imv_loader_load(&ldr, current_path) != 0) { - imv_navigator_remove_current_path(&nav); - } else { - snprintf(&title[0], sizeof(title), "imv - [%i/%i] [%ix%i] %s", - nav.cur_path + 1, nav.num_paths, - ldr.width, ldr.height, current_path); - imv_viewport_set_title(&view, title); - imv_viewport_scale_to_window(&view, &ldr); - - if(overlay_surf) { - free(overlay_surf); - overlay_surf = NULL; - } - if(overlay_tex) { - SDL_DestroyTexture(overlay_tex); - overlay_tex = NULL; - } + imv_loader_load_path(&ldr, current_path); + } - if(font) { - snprintf(&title[0], sizeof(title), "[%i/%i] %s", - nav.cur_path + 1, nav.num_paths, current_path); - SDL_Color w = {255,255,255,255}; - overlay_surf = TTF_RenderUTF8_Blended(font, &title[0], w); - overlay_tex = SDL_CreateTextureFromSurface(renderer, overlay_surf); - } - } + FIBITMAP *bmp = imv_loader_get_image(&ldr); + if(bmp) { + imv_texture_set_image(&tex, bmp); + FreeImage_Unload(bmp); + const char *current_path = imv_navigator_get_current_path(&nav); + char title[256]; + snprintf(&title[0], sizeof(title), "imv - [%i/%i] [%ix%i] %s", + nav.cur_path + 1, nav.num_paths, + tex.width, tex.height, current_path); + imv_viewport_set_title(&view, title); + imv_viewport_scale_to_window(&view, &tex); if(g_options.actual) { - imv_viewport_scale_to_actual(&view, &ldr); + imv_viewport_scale_to_actual(&view, &tex); } } - if(view.playing) { - double cur_time = SDL_GetTicks() / 1000.0; - double dt = cur_time - last_time; - last_time = SDL_GetTicks() / 1000.0; - imv_loader_play(&ldr, dt); - } - - if(imv_loader_has_changed(&ldr)) { - imv_texture_set_image(&tex, ldr.cur_bmp); - imv_viewport_set_redraw(&view); - } if(view.redraw) { if(g_options.solid_bg) { -- cgit v1.2.3