diff options
Diffstat (limited to 'sway')
-rw-r--r-- | sway/tree/container.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index 0a96088e..99262356 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c | |||
@@ -453,19 +453,26 @@ static void update_title_texture(struct sway_container *con, | |||
453 | int width = 0; | 453 | int width = 0; |
454 | int height = con->title_height * scale; | 454 | int height = con->title_height * scale; |
455 | 455 | ||
456 | cairo_t *c = cairo_create(NULL); | 456 | // We must use a non-nil cairo_t for cairo_set_font_options to work. |
457 | // Therefore, we cannot use cairo_create(NULL). | ||
458 | cairo_surface_t *dummy_surface = cairo_image_surface_create( | ||
459 | CAIRO_FORMAT_ARGB32, 0, 0); | ||
460 | cairo_t *c = cairo_create(dummy_surface); | ||
461 | cairo_set_antialias(c, CAIRO_ANTIALIAS_BEST); | ||
462 | cairo_font_options_t *fo = cairo_font_options_create(); | ||
463 | cairo_font_options_set_hint_style(fo, CAIRO_HINT_STYLE_FULL); | ||
464 | cairo_font_options_set_antialias(fo, CAIRO_ANTIALIAS_SUBPIXEL); | ||
465 | cairo_font_options_set_subpixel_order(fo, to_cairo_subpixel_order(output->wlr_output->subpixel)); | ||
466 | cairo_set_font_options(c, fo); | ||
457 | get_text_size(c, config->font, &width, NULL, NULL, scale, | 467 | get_text_size(c, config->font, &width, NULL, NULL, scale, |
458 | config->pango_markup, "%s", con->formatted_title); | 468 | config->pango_markup, "%s", con->formatted_title); |
469 | cairo_surface_destroy(dummy_surface); | ||
459 | cairo_destroy(c); | 470 | cairo_destroy(c); |
460 | 471 | ||
461 | cairo_surface_t *surface = cairo_image_surface_create( | 472 | cairo_surface_t *surface = cairo_image_surface_create( |
462 | CAIRO_FORMAT_ARGB32, width, height); | 473 | CAIRO_FORMAT_ARGB32, width, height); |
463 | cairo_t *cairo = cairo_create(surface); | 474 | cairo_t *cairo = cairo_create(surface); |
464 | cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST); | 475 | cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST); |
465 | cairo_font_options_t *fo = cairo_font_options_create(); | ||
466 | cairo_font_options_set_hint_style(fo, CAIRO_HINT_STYLE_FULL); | ||
467 | cairo_font_options_set_antialias(fo, CAIRO_ANTIALIAS_SUBPIXEL); | ||
468 | cairo_font_options_set_subpixel_order(fo, to_cairo_subpixel_order(output->wlr_output->subpixel)); | ||
469 | cairo_set_font_options(cairo, fo); | 476 | cairo_set_font_options(cairo, fo); |
470 | cairo_font_options_destroy(fo); | 477 | cairo_font_options_destroy(fo); |
471 | cairo_set_source_rgba(cairo, class->background[0], class->background[1], | 478 | cairo_set_source_rgba(cairo, class->background[0], class->background[1], |