diff options
author | Phil Jones <philj56@gmail.com> | 2022-06-10 14:31:54 +0100 |
---|---|---|
committer | Phil Jones <philj56@gmail.com> | 2022-06-10 14:31:54 +0100 |
commit | ee0cd76769d395ce99fad6b76622cfeff714b0f5 (patch) | |
tree | ac1ef98d8c229ae61210b78bd0df3d1565c94807 /src | |
parent | 6ae1fc396820cba2bf0f0c2c51e892fd9d78eaed (diff) |
Remove unneeded Pango layouts.
We don't actually need a separate pango layout for each piece of text,
as we only use them one-by-one anyway, so just use one instead.
Diffstat (limited to 'src')
-rw-r--r-- | src/entry_backend/pango.c | 34 | ||||
-rw-r--r-- | src/entry_backend/pango.h | 4 |
2 files changed, 11 insertions, 27 deletions
diff --git a/src/entry_backend/pango.c b/src/entry_backend/pango.c index 4d43ce3..e115317 100644 --- a/src/entry_backend/pango.c +++ b/src/entry_backend/pango.c @@ -24,20 +24,20 @@ void entry_backend_init(struct entry *entry, uint32_t *width, uint32_t *height, pango_context_set_font_description(context, font_description); pango_font_description_free(font_description); - entry->backend.prompt_layout = pango_layout_new(context); + entry->backend.layout = pango_layout_new(context); log_debug("Setting Pango text.\n"); - pango_layout_set_text(entry->backend.prompt_layout, "run: ", -1); + pango_layout_set_text(entry->backend.layout, "run: ", -1); int prompt_width; int prompt_height; log_debug("Get Pango pixel size.\n"); - pango_layout_get_pixel_size(entry->backend.prompt_layout, &prompt_width, &prompt_height); + pango_layout_get_pixel_size(entry->backend.layout, &prompt_width, &prompt_height); log_debug("First Pango draw.\n"); - pango_cairo_update_layout(cr, entry->backend.prompt_layout); + pango_cairo_update_layout(cr, entry->backend.layout); /* Draw the prompt now, as this only needs to be done once */ struct color color = entry->foreground_color; cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a); - pango_cairo_show_layout(cr, entry->backend.prompt_layout); + pango_cairo_show_layout(cr, entry->backend.layout); /* Move and clip so we don't draw over the prompt */ cairo_translate(cr, prompt_width, 0); @@ -45,40 +45,26 @@ void entry_backend_init(struct entry *entry, uint32_t *width, uint32_t *height, cairo_rectangle(cr, 0, 0, *width, *height); cairo_clip(cr); - log_debug("Creating Pango layout.\n"); - entry->backend.entry_layout = pango_layout_new(context); - pango_layout_set_text(entry->backend.entry_layout, "", -1); - - for (size_t i = 0; i < 5; i++) { - PangoLayout *layout = pango_layout_new(context); - pango_layout_set_text(layout, "", -1); - entry->backend.result_layouts[i] = layout; - } - entry->backend.context = context; } void entry_backend_destroy(struct entry *entry) { - for (size_t i = 0; i < 5; i++) { - g_object_unref(entry->backend.result_layouts[i]); - } - g_object_unref(entry->backend.entry_layout); - g_object_unref(entry->backend.prompt_layout); + g_object_unref(entry->backend.layout); g_object_unref(entry->backend.context); } void entry_backend_update(struct entry *entry) { cairo_t *cr = entry->cairo[entry->index].cr; + PangoLayout *layout = entry->backend.layout; - pango_layout_set_text(entry->backend.entry_layout, entry->input_mb, -1); - pango_cairo_update_layout(cr, entry->backend.entry_layout); - pango_cairo_show_layout(cr, entry->backend.entry_layout); + pango_layout_set_text(layout, entry->input_mb, -1); + pango_cairo_update_layout(cr, layout); + pango_cairo_show_layout(cr, layout); for (size_t i = 0; i < 5; i++) { cairo_translate(cr, 0, 50); - PangoLayout *layout = entry->backend.result_layouts[i]; const char *str; if (i < entry->results.count) { str = entry->results.buf[i]; diff --git a/src/entry_backend/pango.h b/src/entry_backend/pango.h index ef58be3..67b199f 100644 --- a/src/entry_backend/pango.h +++ b/src/entry_backend/pango.h @@ -7,9 +7,7 @@ struct entry; struct entry_backend { PangoContext *context; - PangoLayout *prompt_layout; - PangoLayout *entry_layout; - PangoLayout *result_layouts[5]; + PangoLayout *layout; }; void entry_backend_init(struct entry *entry, uint32_t *width, uint32_t *height, uint32_t scale); |