Emmanuele Bassi
d3a35678a2
Merge branch 'recording-surface-finish-internal-helper' into 'master'
...
recording surface: Implement finish via reset
Closes #928
See merge request cairo/cairo!649
2026-03-03 13:59:07 +00:00
Luca Bacci
1adaf1e7c5
recording surface: Implement finish via reset
...
Rather than the other way round.
Fixes #928
2026-03-02 18:51:00 +01:00
Emmanuele Bassi
4fb80a9aef
Merge branch 'test-fixes' into 'master'
...
Fix test runner on Windows and run tests in CI
Closes #887
See merge request cairo/cairo!609
2026-03-02 10:26:54 +00:00
Emmanuele Bassi
7cd2141f09
Merge branch 'dwrite' into 'master'
...
DWrite: Add support for COLRv1 fonts
Closes #903
See merge request cairo/cairo!625
2026-03-02 10:08:30 +00:00
Behdad Esfahbod
2a45892663
Merge branch 'rectangle-box-negative-extents' into 'master'
...
[matrix] Handle bounding-box extents overflow during transformation
See merge request cairo/cairo!645
2026-02-08 19:44:55 +00:00
Behdad Esfahbod
f0674b4c98
[rectanble Handle overflow in _cairo_box_from_doubles
2026-02-07 13:01:49 -07:00
Uli Schlachter
6b9e6dd0b3
Merge branch 'work/fix-leak-in-_cairo_pdf_surface_finish' into 'master'
...
_cairo_pdf_surface_finish: Fix leak in error conditions
See merge request cairo/cairo!644
2026-01-27 16:00:15 +00:00
Albert Astals Cid
b94bf30f03
_cairo_pdf_surface_finish: Fix leak in error conditions
...
Make sure surface->object_stream.stream is cleaned up even if things
failed
In poppler oss-fuzz tests we are getting this leak reported
Direct leak of 64 byte(s) in 1 object(s) allocated from:
#0 0x5747417eabd9 in __interceptor_calloc /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:74:3
#1 0x574742706f5b in _cairo_memory_stream_create cairo/src/cairo-output-stream.c:741:14
#2 0x5747426757b8 in _cairo_pdf_surface_open_object_stream cairo/src/cairo-pdf-surface.c:2307:34
#3 0x57474266b880 in _cairo_pdf_surface_finish cairo/src/cairo-pdf-surface.c:2700:14
#4 0x57474261afc6 in _cairo_surface_finish cairo/src/cairo-surface.c:1043:11
#5 0x57474261afc6 in cairo_surface_finish cairo/src/cairo-surface.c:1092:5
#6 0x57474270808a in _cairo_paginated_surface_finish cairo/src/cairo-paginated-surface.c:215:2
#7 0x5747426175c2 in _cairo_surface_finish cairo/src/cairo-surface.c:1043:11
#8 0x5747426175c2 in cairo_surface_destroy cairo/src/cairo-surface.c:978:2
This fixes it.
_cairo_pdf_surface_finish was succeeding past
_cairo_pdf_surface_open_object_stream that allocates surface->object_stream.stream,
failing when calling _cairo_pdf_surface_emit_font_subsets
and that memory was never freed
2026-01-24 11:37:50 +01:00
Luca Bacci
2050326dcc
CI/MSVC: Exclude <builddir>/test/srcdir symlink from the artifacts
...
Otherwise latest GitLab fails with:
> ERROR: Uploading artifacts as "archive" to coordinator... error
> error=couldn't execute POST against https://gitlab.freedesktop.org/api/v4/jobs/[...]/artifacts?artifact_format=zip[...] :
> Post "https://gitlab.freedesktop.org/api/v4/jobs/[...]/artifacts?artifact_format=zip[...] ":
> read build/test/srcdir: Incorrect function. id=[...] token=[...]
2026-01-08 15:32:30 +01:00
Luca Bacci
1fdf7051d0
CI/MSVC: Build less
...
Avoid building subproject tests
2026-01-08 15:32:30 +01:00
Luca Bacci
30fdc7f338
CI: Do not store .git directory in artifacts
...
Otherwise gitlab-runner prints a few warnings:
> Uploading artifacts...
> WARNING: Part of .git directory is on the list of files to archive
> WARNING: This may introduce unexpected problems
2026-01-08 15:32:30 +01:00
Luca Bacci
ce3a3e2d27
CI: Run tests on Windows
2026-01-08 15:32:30 +01:00
Luca Bacci
08dcac510b
Tests/create-regions: skip if needed features are missing
2026-01-08 15:32:30 +01:00
Luca Bacci
15cb2d7acf
Tests/font-variations: Cleanup resources in all cases
...
Otherwise the test runner detects leaks
2026-01-08 15:32:30 +01:00
Luca Bacci
1293ec674d
Tests/pdf-operator-text: Check if pdf target is enabled
...
The same is done in pdf-mime-data.c
2026-01-08 15:32:30 +01:00
Luca Bacci
83e5d95ec2
Boilerplate/Win32: Switch to a DIB section
...
Thw Win32 boilerplate worked by creating an offscreen window
and creating a cairo surface that targets the client HDC.
However GDI clips the client HDC to the visible region of the
window, and that region is empty. In the end, every GDI drawing
operation turned into a no-op.
Rather than targeting HWNDs, it's much better to create a bitmap
(DIB Section) and draw via a memory HDC.
https://learn.microsoft.com/en-us/windows/win32/gdi/window-regions
https://devblogs.microsoft.com/oldnewthing/20030829-00/?p=42743
https://devblogs.microsoft.com/oldnewthing/20030902-00/?p=42693
2026-01-08 15:32:24 +01:00
Luca Bacci
2c354599a5
Boilerplate: Use backward slashes for system / popen commands on Windows
...
Both system() and popen() invoke the shell. Which shell is
invoked depends on the COMSPEC environment variable, but
usually it's CMD.exe.
CMD.exe doesn't quite like paths with forward slashes in its
command-line. Most of the times, the forward slash is mistaken
for a command line switch (the start of an option). For example:
cmd /c "dir C:\Windows" works
cmd /c "dir C:/Windows" doesn't work
2026-01-08 15:27:09 +01:00
Luca Bacci
626b3ab2f2
Boilerplate: Open pipe in binary mode on Windows
...
Open the pipe in binary mode on Windows to get the expected
byte counts. Note that the 'b' mode for popen is not portable
and so is used only on Windows:
> The behavior of popen() is specified for values of mode of "r",
> "w", "re", and "we". Other modes such as "rb" and "wb" might be
> supported by specific implementations, but these would not be
> portable features.
https://pubs.opengroup.org/onlinepubs/9799919799/functions/popen.html
2026-01-08 15:24:05 +01:00
Luca Bacci
652456af2d
Meson: Use mklink to create the <builddir>/test/srcdir link on Windows
...
Create the directory symlink '<builddir>/test/srcdir' -> '<sourcedir>'
as done on UNIX with coreutils.
2026-01-08 15:23:33 +01:00
Uli Schlachter
200a02286b
Merge branch 'patch-1' into 'master'
...
Add missing mutex cleanup in _cairo_recording_surface_finish
Closes #922
See merge request cairo/cairo!643
2025-12-20 06:29:18 +00:00
Alvin Wong
5833de29f3
Add missing mutex cleanup in _cairo_recording_surface_finish
2025-12-17 16:35:49 +00:00
Uli Schlachter
04656d7450
Merge branch 'tests-misc-fixes' into 'master'
...
Tests: Misc enhancements
See merge request cairo/cairo!634
2025-07-17 18:38:49 +00:00
Tim-Philipp Müller
6955595c60
Merge branch 'ci-macos-arm64' into 'master'
...
ci: add macOS arm64
See merge request cairo/cairo!498
2025-07-16 17:31:44 +00:00
Luca Bacci
a9e3eaccb8
CI: Add coverage-column-triangles to Quartz ignores
...
Fails with the following log:
Testing coverage-column-triangles with quartz target (dev offset 0 scale: 1)
963 pixels differ (with maximum difference of 9) from reference image
963 pixels differ (with maximum difference of 9) from reference image
OUTPUT: output/coverage-column-triangles.quartz.argb32.out.png
REFERENCE: ../../test/reference/coverage-column-triangles.ref.png
DIFFERENCE: output/coverage-column-triangles.quartz.argb32.diff.png
TEST: coverage-column-triangles TARGET: quartz FORMAT: argb32 OFFSET: 0 SCALE: 1 SIMILAR: 0 RESULT: FAIL
(...)
2025-07-16 11:52:45 +02:00
Luca Bacci
2e0713971f
Update Quartz reference images
2025-07-16 11:52:45 +02:00
Tim-Philipp Müller
d371015d45
ci: add macOS arm64
2025-07-16 11:52:41 +02:00
Luca Bacci
355e421640
CI: Avoid running duplicated tests
...
...also simplifies .gitlab-ci.yml a bit
2025-07-15 14:28:27 +02:00
Luca Bacci
2b7ab8b895
Remove leftover scripts from the autotools build
2025-07-15 14:28:18 +02:00
Luca Bacci
471f8410a5
make-constructors.py: Sort tests list
...
This way cairo-test-suite works on sorted data
2025-07-15 14:27:15 +02:00
Emmanuele Bassi
8e9b856488
Merge branch 'win2k' into 'master'
...
win32: Fix MSVC build with dwrite disabled
See merge request cairo/cairo!618
2025-07-14 22:39:41 +00:00
Benjamin Gilbert
7a780896a1
win32: Fix MSVC build with dwrite disabled
...
We now require at least Windows Vista. When dwrite is disabled, declare
WINVER accordingly so we get the defines we no longer carry ourselves.
The default dwrite-enabled path already has a new-enough WINVER.
Fixes: d0ee67a142 ("Win32: Remove unused code and defines for old toolchains")
2025-07-14 12:17:27 -07:00
Emmanuele Bassi
a4d5a24d60
Merge branch 'fix-msc-ver-compare' into 'master'
...
Check if _MSC_VER macro is defined
See merge request cairo/cairo!611
2025-07-14 14:42:26 +00:00
Emmanuele Bassi
6ac5348308
The GDI coordinate system is inverted compared to cairo's here, so the
...
delta-y value needs to be negated, otherwise glyph runs with non-zero
y-advances will shift in the wrong direction.
See mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=1962816 and
earlier https://bugzilla.mozilla.org/show_bug.cgi?id=454098 where this was
first discovered & fixed, but unfortunately was not upstreamed at that
time.
2025-07-14 14:41:40 +00:00
Jonathan Kew
503505666f
Fix sign of delta-y for ExtTextOutW
2025-07-14 14:41:40 +00:00
Luca Bacci
1aaa23aefb
DWrite: Add support for COLRv1 fonts
...
Fixes https://gitlab.freedesktop.org/cairo/cairo/-/issues/903
2025-07-14 16:34:07 +02:00
Luca Bacci
457ab827c9
Add definition for IDWriteFactory8
2025-07-14 16:34:06 +02:00
Luca Bacci
2a306f8e5f
Always include dwrite-extra.hpp
2025-07-14 16:34:05 +02:00
Luca Bacci
53c3702686
dwrite-extra.hpp: Fix check for mingw-w64 workaround
2025-07-14 16:34:04 +02:00
Luca Bacci
02763155e8
dwrite-extra.hpp: Rework a bit
2025-07-14 16:34:03 +02:00
Luca Bacci
27411659d8
Rename dwrite / d2d1 polyfill headers to .hpp extension
...
They are only usable from C++ now
2025-07-14 16:34:02 +02:00
Luca Bacci
6ec91df76e
Check which ID2D1DeviceContext subclasses are defined in d2d1_3.h
...
...and make d2d1-extra.h provide the missing definitions
2025-07-14 16:34:01 +02:00
Luca Bacci
6c75de11ab
Meson: Simplify check for D2D, DWrite, WIC a bit
2025-07-14 16:34:00 +02:00
Luca Bacci
bd930bc98d
Meson: Do not check for d2d1.h, dwrite.h, wincodec.h
...
If the import libraries are found, we can assume that headers are present
as well. All three headers were introduced many years ago in the Windows
SDK and mingw-w64 headers.
2025-07-14 16:34:00 +02:00
Luca Bacci
306396ff53
Add definitions for ID2D1DeviceContext7 in d2d1-extra.h
...
We're going to make use of ID2D1DeviceContext7::DrawPaintGlyphRun()
for COLRv1 fonts.
2025-07-14 16:33:59 +02:00
Luca Bacci
b1bc5a73f6
DWrite: don't set component-alpha for A8 mask
...
It was just a copy-paste leftover. Component-alpha makes sense
only for color images.
2025-07-14 16:33:59 +02:00
Luca Bacci
7f82b13fbf
Fix typo
2025-07-14 16:33:58 +02:00
Luca Bacci
c7a3e6c519
Check if _MSC_VER macro is defined
...
Original patch from MSYS2:
https://github.com/msys2/MINGW-packages/blob/36dd8e0bdf/mingw-w64-cairo/0030-ucrt-clang-fixes.patch
2025-07-14 15:53:52 +02:00
Luca Bacci
b9bab3defb
Readme: Remove leftover mention of Windows 2000
...
We support Windows Vista or newer
2025-07-14 15:52:40 +02:00
Uli Schlachter
2f21b3874c
Merge branch 'fix-clipping-crash' into 'master'
...
Fix a crash in the clipping code
See merge request cairo/cairo!622
2025-07-14 13:01:46 +00:00
Uli Schlachter
55cb75c4df
Merge branch 'winsdk_26100_fix' into 'master'
...
Add check for clang to cairo attribute handling code
See merge request cairo/cairo!612
2025-07-05 09:02:29 +00:00