From a461d4f26fd2d62433ff553f0305de52b1f407aa Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Fri, 14 Apr 2017 22:55:54 +0100 Subject: Move some globals back to locals --- src/main.c | 55 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 3a9c4e4..dad28b1 100644 --- a/src/main.c +++ b/src/main.c @@ -178,8 +178,6 @@ struct { struct imv_texture *tex; struct imv_viewport *view; struct imv_commands *cmds; - SDL_Window *window; - SDL_Renderer *renderer; int quit; /* used to calculate when to skip to the next image in slideshow mode */ @@ -203,7 +201,11 @@ void cmd_fullscreen(struct imv_list *args); void cmd_overlay(struct imv_list *args); void handle_event(SDL_Event *event); -void render_window(TTF_Font *text_font, SDL_Texture *bg_texture); +void render_window( + SDL_Window *window, + SDL_Renderer *renderer, + TTF_Font *text_font, + SDL_Texture *bg_texture); int main(int argc, char** argv) { @@ -319,23 +321,23 @@ int main(int argc, char** argv) const int width = 1280; const int height = 720; - g_state.window = SDL_CreateWindow( + SDL_Window *window = SDL_CreateWindow( "imv", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_RESIZABLE); - if(!g_state.window) { + if(!window) { fprintf(stderr, "SDL Failed to create window: %s\n", SDL_GetError()); SDL_Quit(); exit(1); } /* we'll use SDL's built-in renderer, hardware accelerated if possible */ - g_state.renderer = SDL_CreateRenderer(g_state.window, -1, 0); - if(!g_state.renderer) { + SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0); + if(!renderer) { fprintf(stderr, "SDL Failed to create renderer: %s\n", SDL_GetError()); - SDL_DestroyWindow(g_state.window); + SDL_DestroyWindow(window); SDL_Quit(); exit(1); } @@ -347,7 +349,7 @@ int main(int argc, char** argv) /* construct a chequered background texture */ SDL_Texture *chequered_tex = NULL; if(!g_options.solid_bg) { - chequered_tex = create_chequered(g_state.renderer); + chequered_tex = create_chequered(renderer); } /* set up the required fonts and surfaces for displaying the overlay */ @@ -359,8 +361,8 @@ int main(int argc, char** argv) /* create our main classes */ g_state.ldr = imv_loader_create(); - g_state.tex = imv_texture_create(g_state.renderer); - g_state.view = imv_viewport_create(g_state.window); + g_state.tex = imv_texture_create(renderer); + g_state.view = imv_viewport_create(window); /* put us in fullscren mode to begin with if requested */ if(g_options.fullscreen) { @@ -441,7 +443,7 @@ int main(int argc, char** argv) /* get window height and width */ int ww, wh; - SDL_GetWindowSize(g_state.window, &ww, &wh); + SDL_GetWindowSize(window, &ww, &wh); /* check if a new image is available to display */ FIBITMAP *bmp; @@ -501,7 +503,9 @@ int main(int argc, char** argv) /* only redraw when something's changed */ if(g_state.need_redraw) { - render_window(font, chequered_tex); + render_window(window, renderer, font, chequered_tex); + /* tell SDL to show the newly drawn frame */ + SDL_RenderPresent(renderer); } /* sleep a little bit so we don't waste CPU time */ @@ -564,8 +568,8 @@ int main(int argc, char** argv) if(chequered_tex) { SDL_DestroyTexture(chequered_tex); } - SDL_DestroyRenderer(g_state.renderer); - SDL_DestroyWindow(g_state.window); + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); SDL_Quit(); return 0; @@ -796,11 +800,15 @@ void handle_event(SDL_Event *event) } } -void render_window(TTF_Font *text_font, SDL_Texture *bg_texture) +void render_window( + SDL_Window *window, + SDL_Renderer *renderer, + TTF_Font *text_font, + SDL_Texture *bg_texture) { char title[1024]; int ww, wh; - SDL_GetWindowSize(g_state.window, &ww, &wh); + SDL_GetWindowSize(window, &ww, &wh); /* update window title */ const char *current_path = imv_navigator_selection(g_state.nav); @@ -817,9 +825,9 @@ void render_window(TTF_Font *text_font, SDL_Texture *bg_texture) /* first we draw the background */ if(g_options.solid_bg) { /* solid background */ - SDL_SetRenderDrawColor(g_state.renderer, + SDL_SetRenderDrawColor(renderer, g_options.bg_r, g_options.bg_g, g_options.bg_b, 255); - SDL_RenderClear(g_state.renderer); + SDL_RenderClear(renderer); } else { /* background */ int img_w, img_h; @@ -828,7 +836,7 @@ void render_window(TTF_Font *text_font, SDL_Texture *bg_texture) for(int y = 0; y < wh; y += img_h) { for(int x = 0; x < ww; x += img_w) { SDL_Rect dst_rect = {x,y,img_w,img_h}; - SDL_RenderCopy(g_state.renderer, bg_texture, NULL, &dst_rect); + SDL_RenderCopy(renderer, bg_texture, NULL, &dst_rect); } } } @@ -840,7 +848,7 @@ void render_window(TTF_Font *text_font, SDL_Texture *bg_texture) if(g_options.overlay && text_font) { SDL_Color fg = {255,255,255,255}; SDL_Color bg = {0,0,0,160}; - imv_printf(g_state.renderer, text_font, 0, 0, &fg, &bg, "%s", + imv_printf(renderer, text_font, 0, 0, &fg, &bg, "%s", title + strlen("imv - ")); } @@ -848,7 +856,7 @@ void render_window(TTF_Font *text_font, SDL_Texture *bg_texture) if(g_state.command_buffer && text_font) { SDL_Color fg = {255,255,255,255}; SDL_Color bg = {0,0,0,160}; - imv_printf(g_state.renderer, + imv_printf(renderer, text_font, 0, wh - TTF_FontHeight(text_font), &fg, &bg, @@ -857,9 +865,6 @@ void render_window(TTF_Font *text_font, SDL_Texture *bg_texture) /* redraw complete, unset the flag */ g_state.need_redraw = 0; - - /* tell SDL to show the newly drawn frame */ - SDL_RenderPresent(g_state.renderer); } /* vim:set ts=2 sts=2 sw=2 et: */ -- cgit v1.2.3