From cae31ab336ca523fce072141dd09e1f00d2b27eb Mon Sep 17 00:00:00 2001 From: itepechi <72330683+itepechi@users.noreply.github.com> Date: Mon, 25 Oct 2021 16:06:00 +0900 Subject: [PATCH] Read/Write bganchor directly from the options' state Slight performance improvement, maybe? Also, `kitty/graphics.h` has been reverted to the original version; this version would be better in that aspect too. --- kitty/graphics.h | 1 - kitty/shaders.c | 10 +++++----- kitty/state.c | 2 -- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/kitty/graphics.h b/kitty/graphics.h index 4a25fb739..55015e88a 100644 --- a/kitty/graphics.h +++ b/kitty/graphics.h @@ -66,7 +66,6 @@ typedef struct { unsigned int height, width; uint8_t* bitmap; uint32_t refcnt; - BackgroundImageAnchor anchor; } BackgroundImage; typedef struct { diff --git a/kitty/shaders.c b/kitty/shaders.c index 78f0219e0..9c3ce2e5b 100644 --- a/kitty/shaders.c +++ b/kitty/shaders.c @@ -417,15 +417,15 @@ draw_bg(OSWindow *w) { bgimage_constants_set = true; } float translate_left = 0.0f, translate_top = 0.0f; - if (OPT(background_image_layout) != SCALED) { - if (w->bgimage->anchor == NORTH || w->bgimage->anchor == CENTER || w->bgimage->anchor == SOUTH) { + if (OPT(background_image_layout) == TILING || OPT(background_image_layout) == MIRRORED) { + if (OPT(background_image_anchor) == NORTH || OPT(background_image_anchor) == CENTER || OPT(background_image_anchor) == SOUTH) { translate_left = ((float)w->window_width / 2.0f - (float)w->bgimage->width / 2.0f) / (float)w->bgimage->width; - } else if (w->bgimage->anchor == NORTHEAST || w->bgimage->anchor == EAST || w->bgimage->anchor == SOUTHEAST) { + } else if (OPT(background_image_anchor) == NORTHEAST || OPT(background_image_anchor) == EAST || OPT(background_image_anchor) == SOUTHEAST) { translate_left = ((float)w->window_width - (float)w->bgimage->width) / (float)w->bgimage->width; } - if (w->bgimage->anchor == WEST || w->bgimage->anchor == CENTER || w->bgimage->anchor == EAST) { + if (OPT(background_image_anchor) == WEST || OPT(background_image_anchor) == CENTER || OPT(background_image_anchor) == EAST) { translate_top = ((float)w->window_height / 2.0f - (float)w->bgimage->height / 2.0f) / (float)w->bgimage->height; - } else if (w->bgimage->anchor == SOUTHWEST || w->bgimage->anchor == SOUTH || w->bgimage->anchor == SOUTHEAST) { + } else if (OPT(background_image_anchor) == SOUTHWEST || OPT(background_image_anchor) == SOUTH || OPT(background_image_anchor) == SOUTHEAST) { translate_top = ((float)w->window_height - (float)w->bgimage->height) / (float)w->bgimage->height; } } diff --git a/kitty/state.c b/kitty/state.c index 9de2462ec..b1243971d 100644 --- a/kitty/state.c +++ b/kitty/state.c @@ -180,7 +180,6 @@ add_os_window() { global_state.bgimage = calloc(1, sizeof(BackgroundImage)); if (!global_state.bgimage) fatal("Out of memory allocating the global bg image object"); global_state.bgimage->refcnt++; - global_state.bgimage->anchor = OPT(background_image_anchor); size_t size; if (png_path_to_bitmap(OPT(background_image), &global_state.bgimage->bitmap, &global_state.bgimage->width, &global_state.bgimage->height, &size)) { send_bgimage_to_gpu(OPT(background_image_layout), global_state.bgimage); @@ -994,7 +993,6 @@ pyset_background_image(PyObject *self UNUSED, PyObject *args) { make_os_window_context_current(os_window); free_bgimage(&os_window->bgimage, true); os_window->bgimage = bgimage; - os_window->bgimage->anchor = anchor; os_window->render_calls = 0; if (bgimage) bgimage->refcnt++; END_WITH_OS_WINDOW