Gimp/plug-ins
Jehan 926d5c6daa app, libgimp*, plug-ins: fix previous commit and add gimp_cairo_surface_get_buffer().
The previous commit was not taking into account usages of
gimp_cairo_surface_create_buffer(), other than the text layer rendering
usage, as it was focused on fixing #14970.

In particular, in other pieces of code, we were using a temporary
GeglBuffer as a way to edit the original Cairo surface but the syncing
back was not happening anymore. So previous commit was breaking all
thumbnails of layers or images, as well as PDF export for all raster
layers.

After some thought, I decided to implement a new function
gimp_cairo_surface_get_buffer() which would do what
gimp_cairo_surface_create_buffer() was doing, but adding a boolean flag
to declare whether or not we were expecting to sync back into the Cairo
surface's data. After all, when we don't need to sync back, better avoid
the useless work of copying possibly huge data.

I also added back the possibility of returning a linear-memory backed
buffer, after some discussion with pippin. Because for very small
surfaces, and if we are indeed looking to sync back into the source
Cairo surface, the advantages of using a linear buffer may still be
worth it, even though it's not true for the general case (where tiled
buffers will be much more efficient). I used 4096 (64^2 because our
current tile dimensions are 64 right now in GIMP), though this number is
kinda random and doesn't matter too much (it doesn't have to be the
square of the tile's width or height). I don't put any info about this
in the new function's documentation because developers should not have
any expectations on the type of buffer they get (only whether or not it
will sync back to the source).

As a consequence of all this, gimp_cairo_surface_create_buffer() has
been deprecated as of GIMP 3.2, though it will still work the same. The
new function will be recommended as a replacement.
2025-11-08 20:34:55 +01:00
..
common app, libgimp*, plug-ins: fix previous commit and add gimp_cairo_surface_get_buffer(). 2025-11-08 20:34:55 +01:00
file-bmp build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
file-dds plug-ins: crash on exporting dds with invalid number of mipmaps 2025-11-05 09:28:54 -05:00
file-exr plug-ins: fix file-exr warning and a possible memory leak 2025-09-03 12:59:39 +00:00
file-faxg3 build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
file-fits plug-ins: Fix bug with RGB FITS export 2025-07-19 23:36:20 +00:00
file-fli build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
file-icns plug-ins: Fix ZDI-CAN-27684 2025-09-03 13:41:10 +00:00
file-ico plug-ins: fix memory cleanup. 2025-10-31 00:32:04 +01:00
file-jpeg plug-ins: align with __attribute__ keyword. 2025-09-15 19:36:29 +02:00
file-psd plug-ins: Remove metadata on J2K and PSB export 2025-08-31 13:22:28 +00:00
file-raw build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
file-sgi build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
file-tiff Issue #12816: fix custom procedure config parasite. 2025-10-24 02:24:53 +02:00
file-webp build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
filter-browser plug-ins/filter-browser: Remove Pippins's copyright 2025-08-26 23:50:37 +00:00
flame plug-ins: Port from GimpScaleEntry to GimpSpinScale 2025-11-06 05:06:09 +02:00
fractal-explorer plug-ins: Port from GimpScaleEntry to GimpSpinScale 2025-11-06 05:06:09 +02:00
gfig plug-ins: Port from GimpScaleEntry to GimpSpinScale 2025-11-06 05:06:09 +02:00
gimpressionist plug-ins: Change gimpressionist Size Map dialog text... 2025-10-12 12:53:03 -04:00
gradient-flare plug-ins: Fix crash when removing flares in Gradient Flare 2025-10-17 21:58:15 +00:00
help Declare gexiv2 dependency on many targets (due to gimpmetadata.h) 2025-10-03 18:31:53 -03:00
help-browser build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
ifs-compose build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
imagemap plug-ins: Add option to close via ESC key 2025-11-06 07:33:06 +00:00
lighting plug-ins: Port from GimpScaleEntry to GimpSpinScale 2025-11-06 05:06:09 +02:00
map-object plug-ins: Port from GimpScaleEntry to GimpSpinScale 2025-11-06 05:06:09 +02:00
metadata plug-ins: Use GtkListBox in metadata viewer 2025-07-11 21:44:09 +00:00
pagecurl build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
print plug-ins: Allow for more specific print settings with portals 2025-08-30 15:41:49 +00:00
python plugins: Use title case for menu label of Histogram Export plug-in 2025-10-12 16:02:57 -03:00
screenshot Revert "plug-ins: Convert screenshot dropdowns to radios" 2025-06-13 16:50:12 +00:00
script-fu script-fu: Prevent crash when script object is NULL 2025-11-04 19:35:13 +00:00
selection-to-path plug-ins: Port from GimpScaleEntry to GimpSpinScale 2025-11-06 05:06:09 +02:00
twain build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
generate_associations.py build, plug-ins: Generate *associations.list automatically at build-time 2025-05-30 19:23:41 -03:00
generate_mime_ext.py meson, desktop, plug-ins: Generate MIMEtypes var dynamically 2025-06-13 13:47:19 -03:00
meson.build plug-ins: Add GEGL filter API browser 2025-08-03 21:38:28 +00:00