mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-10-06 01:12:40 +02:00
Merge branch 'fix_big_drawables_crash' into 'master'
libgimpcolor: create gegl buffers with gegl_buffer_new instead of gegl_buffer_linear_new_from_data Closes #14970 See merge request GNOME/gimp!2486
This commit is contained in:
@@ -176,8 +176,8 @@ GeglBuffer *
|
|||||||
gimp_cairo_surface_create_buffer (cairo_surface_t *surface,
|
gimp_cairo_surface_create_buffer (cairo_surface_t *surface,
|
||||||
const Babl *format)
|
const Babl *format)
|
||||||
{
|
{
|
||||||
gint width;
|
GeglBuffer *buffer;
|
||||||
gint height;
|
GeglRectangle extent = {0};
|
||||||
|
|
||||||
g_return_val_if_fail (surface != NULL, NULL);
|
g_return_val_if_fail (surface != NULL, NULL);
|
||||||
g_return_val_if_fail (cairo_surface_get_type (surface) ==
|
g_return_val_if_fail (cairo_surface_get_type (surface) ==
|
||||||
@@ -188,14 +188,12 @@ gimp_cairo_surface_create_buffer (cairo_surface_t *surface,
|
|||||||
|
|
||||||
if (format == NULL)
|
if (format == NULL)
|
||||||
format = gimp_cairo_surface_get_format (surface);
|
format = gimp_cairo_surface_get_format (surface);
|
||||||
width = cairo_image_surface_get_width (surface);
|
extent.width = cairo_image_surface_get_width (surface);
|
||||||
height = cairo_image_surface_get_height (surface);
|
extent.height = cairo_image_surface_get_height (surface);
|
||||||
|
|
||||||
return
|
buffer = gegl_buffer_new (&extent, format);
|
||||||
gegl_buffer_linear_new_from_data (cairo_image_surface_get_data (surface),
|
|
||||||
format,
|
gegl_buffer_set (buffer, &extent, 0, format, cairo_image_surface_get_data (surface), cairo_image_surface_get_stride (surface));
|
||||||
GEGL_RECTANGLE (0, 0, width, height),
|
|
||||||
cairo_image_surface_get_stride (surface),
|
return buffer;
|
||||||
(GDestroyNotify) cairo_surface_destroy,
|
|
||||||
cairo_surface_reference (surface));
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user