Simplify render_menu
This commit is contained in:
parent
48ec172b4b
commit
3ad4b5ca3f
1 changed files with 6 additions and 25 deletions
31
render.c
31
render.c
|
@ -189,41 +189,22 @@ static void render_to_cairo(struct menu *menu, cairo_t *cairo) {
|
|||
void render_menu(struct menu *menu) {
|
||||
struct wl_context *context = menu->context;
|
||||
|
||||
cairo_surface_t *recorder = cairo_recording_surface_create(
|
||||
CAIRO_CONTENT_COLOR_ALPHA, NULL);
|
||||
cairo_t *cairo = cairo_create(recorder);
|
||||
cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST);
|
||||
cairo_font_options_t *fo = cairo_font_options_create();
|
||||
cairo_set_font_options(cairo, fo);
|
||||
cairo_font_options_destroy(fo);
|
||||
cairo_save(cairo);
|
||||
cairo_set_operator(cairo, CAIRO_OPERATOR_CLEAR);
|
||||
cairo_paint(cairo);
|
||||
cairo_restore(cairo);
|
||||
|
||||
render_to_cairo(menu, cairo);
|
||||
|
||||
int scale = context_get_scale(context);
|
||||
struct pool_buffer *buffer = context_get_next_buffer(context, scale);
|
||||
if (!buffer) {
|
||||
goto cleanup;
|
||||
return;
|
||||
}
|
||||
|
||||
cairo_t *shm = buffer->cairo;
|
||||
cairo_save(shm);
|
||||
cairo_set_operator(shm, CAIRO_OPERATOR_CLEAR);
|
||||
cairo_paint(shm);
|
||||
cairo_restore(shm);
|
||||
cairo_set_source_surface(shm, recorder, 0, 0);
|
||||
cairo_paint(shm);
|
||||
cairo_set_antialias(shm, CAIRO_ANTIALIAS_BEST);
|
||||
cairo_font_options_t *fo = cairo_font_options_create();
|
||||
cairo_set_font_options(shm, fo);
|
||||
cairo_font_options_destroy(fo);
|
||||
render_to_cairo(menu, shm);
|
||||
|
||||
struct wl_surface *surface = context_get_surface(context);
|
||||
wl_surface_set_buffer_scale(surface, scale);
|
||||
wl_surface_attach(surface, buffer->buffer, 0, 0);
|
||||
wl_surface_damage(surface, 0, 0, menu->width, menu->height);
|
||||
wl_surface_commit(surface);
|
||||
|
||||
cleanup:
|
||||
cairo_destroy(cairo);
|
||||
cairo_surface_destroy(recorder);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue