summaryrefslogtreecommitdiff
path: root/src/drivers/Wayland
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-05-05 11:34:10 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-05-05 11:34:10 +0200
commitaf91083a7fd15100ef04b66b521c321249143580 (patch)
treeee0f287a2febf1afc79037983f3959010983de03 /src/drivers/Wayland
parente02ee7d5f11b31024e1fe91cf980a90641b1a2c4 (diff)
Fl_Cairo_Graphics_Driver: simpler code with early calls to cairo_surface_destroy().
Add also replacement for pango_font_metrics_get_height() which requires Pango 1.44
Diffstat (limited to 'src/drivers/Wayland')
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx3
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx8
2 files changed, 5 insertions, 6 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx
index 99d702d50..ffc86bd03 100644
--- a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx
@@ -110,6 +110,7 @@ void Fl_Wayland_Graphics_Driver::cairo_init(struct fl_wld_buffer *buffer, int wi
Fl::fatal("Cairo error during cairo_create() %s\n", cairo_status_to_string(err));
return;
}
+ cairo_surface_destroy(surf);
cairo_set_source_rgba(buffer->cairo_, 1.0, 1.0, 1.0, 0.);
cairo_paint(buffer->cairo_);
cairo_set_source_rgba(buffer->cairo_, .0, .0, .0, 1.0); // Black default color
@@ -123,9 +124,7 @@ void Fl_Wayland_Graphics_Driver::buffer_release(struct wld_window *window)
wl_buffer_destroy(window->buffer->wl_buffer);
delete[] window->buffer->draw_buffer;
window->buffer->draw_buffer = NULL;
- cairo_surface_t *surf = cairo_get_target(window->buffer->cairo_);
cairo_destroy(window->buffer->cairo_);
- cairo_surface_destroy(surf);
free(window->buffer);
window->buffer = NULL;
}
diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
index cf589bd57..0f07082c5 100644
--- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx
@@ -91,9 +91,8 @@ Fl_Wayland_Window_Driver::~Fl_Wayland_Window_Driver()
if (shape_data_) {
cairo_surface_t *surface;
cairo_pattern_get_surface(shape_data_->mask_pattern_, &surface);
- cairo_pattern_destroy(shape_data_->mask_pattern_);
uchar *data = cairo_image_surface_get_data(surface);
- cairo_surface_destroy(surface);
+ cairo_pattern_destroy(shape_data_->mask_pattern_);
delete[] data;
delete shape_data_;
}
@@ -206,6 +205,7 @@ void Fl_Wayland_Window_Driver::shape_bitmap_(Fl_Image* b) { // needs testing
}
cairo_surface_t *mask_surf = cairo_image_surface_create_for_data(bits, CAIRO_FORMAT_A1, w, h, bytesperrow);
shape_data_->mask_pattern_ = cairo_pattern_create_for_surface(mask_surf);
+ cairo_surface_destroy(mask_surf);
shape_data_->shape_ = b;
shape_data_->lw_ = w;
shape_data_->lh_ = h;
@@ -244,6 +244,7 @@ void Fl_Wayland_Window_Driver::shape_alpha_(Fl_Image* img, int offset) {
}
cairo_surface_t *mask_surf = cairo_image_surface_create_for_data(bits, CAIRO_FORMAT_A1, w, h, bytesperrow);
shape_data_->mask_pattern_ = cairo_pattern_create_for_surface(mask_surf);
+ cairo_surface_destroy(mask_surf);
shape_data_->shape_ = img;
shape_data_->lw_ = w;
shape_data_->lh_ = h;
@@ -254,9 +255,8 @@ void Fl_Wayland_Window_Driver::shape(const Fl_Image* img) {
if (shape_data_->mask_pattern_) {
cairo_surface_t *surface;
cairo_pattern_get_surface(shape_data_->mask_pattern_, &surface);
- cairo_pattern_destroy(shape_data_->mask_pattern_);
uchar *data = cairo_image_surface_get_data(surface);
- cairo_surface_destroy(surface);
+ cairo_pattern_destroy(shape_data_->mask_pattern_);
delete[] data;
}
}