summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-08-08 09:05:12 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-08-08 09:05:12 +0200
commit45d119eb3c666c62ce8f7b39dcdcad55fb4fdfa5 (patch)
tree41c1cbbf73302f0b06fc426994ef354f0a4dd8da /src
parenta98aaecf976f46300383b85041f13962ab604147 (diff)
Move repeated code to Fl_Wayland_Graphics_Driver::cairo_init()
Diffstat (limited to 'src')
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx6
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx5
2 files changed, 4 insertions, 7 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx
index 4a5351701..bede37b60 100644
--- a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx
@@ -77,9 +77,6 @@ struct fl_wld_buffer *Fl_Wayland_Graphics_Driver::create_shm_buffer(int width, i
buffer->shm_pool = pool;
buffer->data = (void*)(pool_data->pool_memory + chunk_offset);
//fprintf(stderr, "last=%p chunk_offset=%d ", pool_data->buffers.next, chunk_offset);
- buffer->data_size = size;
- buffer->width = width;
- buffer->draw_buffer = new uchar[buffer->data_size];
buffer->draw_buffer_needs_commit = true;
//fprintf(stderr, "create_shm_buffer: %dx%d = %d\n", width, height, size);
cairo_init(buffer, width, height, stride, Fl_Cairo_Graphics_Driver::cairo_format);
@@ -154,6 +151,9 @@ void Fl_Wayland_Graphics_Driver::buffer_commit(struct wld_window *window,
void Fl_Wayland_Graphics_Driver::cairo_init(struct fl_wld_buffer *buffer, int width, int height, int stride, cairo_format_t format) {
+ buffer->data_size = stride * height;
+ buffer->draw_buffer = new uchar[buffer->data_size];
+ buffer->width = width;
cairo_surface_t *surf = cairo_image_surface_create_for_data(buffer->draw_buffer, format,
width, height, stride);
if (cairo_surface_status(surf) != CAIRO_STATUS_SUCCESS) {
diff --git a/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx
index 287012c0a..a3e003e54 100644
--- a/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx
@@ -34,9 +34,6 @@ Fl_Wayland_Image_Surface_Driver::Fl_Wayland_Image_Surface_Driver(int w, int h, i
}
struct fl_wld_buffer *off_ = (struct fl_wld_buffer*)calloc(1, sizeof(struct fl_wld_buffer));
off_->stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, w);
- off_->data_size = off_->stride * h;
- off_->draw_buffer = (uchar*)malloc(off_->data_size);
- off_->width = w;
offscreen = (Fl_Offscreen)off_;
Fl_Wayland_Graphics_Driver::cairo_init(off_, w, h, off_->stride, CAIRO_FORMAT_RGB24);
}
@@ -48,7 +45,7 @@ Fl_Wayland_Image_Surface_Driver::Fl_Wayland_Image_Surface_Driver(int w, int h, i
Fl_Wayland_Image_Surface_Driver::~Fl_Wayland_Image_Surface_Driver() {
if (offscreen && !external_offscreen) {
cairo_destroy(((struct fl_wld_buffer *)offscreen)->cairo_);
- free(((struct fl_wld_buffer *)offscreen)->draw_buffer);
+ delete[] ((struct fl_wld_buffer *)offscreen)->draw_buffer;
free((struct fl_wld_buffer *)offscreen);
}
delete driver();