From 897a6910b60ad8331ddb451d9dbc6c62da2b4657 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sun, 23 Apr 2023 09:37:36 +0200 Subject: Slightly simpler Fl_Wayland_Graphics_Driver::copy_offscreen() --- src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/drivers/Wayland') diff --git a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx index 71866843f..c8793d55d 100644 --- a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx @@ -186,14 +186,13 @@ void Fl_Wayland_Graphics_Driver::set_buffer(struct fl_wld_buffer *buffer, float void Fl_Wayland_Graphics_Driver::copy_offscreen(int x, int y, int w, int h, Fl_Offscreen src, int srcx, int srcy) { // draw portion srcx,srcy,w,h of osrc to position x,y (top-left) of the graphics driver's surface struct fl_wld_buffer *osrc = (struct fl_wld_buffer *)src; - int height = osrc->data_size / osrc->stride; cairo_matrix_t matrix; cairo_get_matrix(cairo_, &matrix); double s = matrix.xx; cairo_save(cairo_); cairo_rectangle(cairo_, x, y, w, h); cairo_clip(cairo_); - cairo_surface_t *surf = cairo_image_surface_create_for_data(osrc->draw_buffer, Fl_Cairo_Graphics_Driver::cairo_format, osrc->width, height, osrc->stride); + cairo_surface_t *surf = cairo_get_target(osrc->cairo_); cairo_pattern_t *pat = cairo_pattern_create_for_surface(surf); cairo_set_source(cairo_, pat); cairo_matrix_init_scale(&matrix, s, s); @@ -201,6 +200,5 @@ void Fl_Wayland_Graphics_Driver::copy_offscreen(int x, int y, int w, int h, Fl_O cairo_pattern_set_matrix(pat, &matrix); cairo_mask(cairo_, pat); cairo_pattern_destroy(pat); - cairo_surface_destroy(surf); cairo_restore(cairo_); } -- cgit v1.2.3