From gitlab-mirror at kemper.freedesktop.org Sat May 13 22:07:38 2023 From: gitlab-mirror at kemper.freedesktop.org (GitLab Mirror) Date: Sat, 13 May 2023 22:07:38 +0000 (UTC) Subject: [cairo-commit] 2 commits - src/cairo-ft-font.c Message-ID: <20230513220738.07E9A76189@kemper.freedesktop.org> src/cairo-ft-font.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) New commits: commit 9831eba0ecda382e4600396c8b43890b440e9a80 Merge: 8d6586f49 10cc34f52 Author: Adrian Johnson Date: Sat May 13 22:07:36 2023 +0000 Merge branch 'issue-778' into 'master' ft: don't use scaled_glyph->dev_private to store data Closes #778 See merge request cairo/cairo!476 commit 10cc34f521cf272f881bbad9a6fc4e794cca8687 Author: Adrian Johnson Date: Sat May 13 18:51:40 2023 +0930 ft: don't use scaled_glyph->dev_private to store data It is also used by the xlib surface. Fixes #778 diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c index 834e4ba31..76c9e008f 100644 --- a/src/cairo-ft-font.c +++ b/src/cairo-ft-font.c @@ -2600,6 +2600,7 @@ _cairo_ft_scaled_glyph_set_foreground_color (cairo_ft_scaled_font_t *scaled_font static cairo_int_status_t _cairo_ft_scaled_glyph_init_surface (cairo_ft_scaled_font_t *scaled_font, cairo_scaled_glyph_t *scaled_glyph, + cairo_ft_glyph_private_t *glyph_priv, cairo_scaled_glyph_info_t info, FT_Face face, const cairo_color_t *foreground_color, @@ -2611,7 +2612,6 @@ _cairo_ft_scaled_glyph_init_surface (cairo_ft_scaled_font_t *scaled_font, cairo_status_t status; cairo_image_surface_t *surface; cairo_bool_t uses_foreground_color = FALSE; - cairo_ft_glyph_private_t *glyph_priv = scaled_glyph->dev_private; /* Only one info type at a time handled in this function */ assert (info == CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE || info == CAIRO_SCALED_GLYPH_INFO_SURFACE); @@ -3302,7 +3302,6 @@ _cairo_ft_scaled_glyph_init_metrics (cairo_ft_scaled_font_t *scaled_font, _cairo_scaled_glyph_attach_private (scaled_glyph, &glyph_priv->base, &ft_glyph_private_key, _cairo_ft_glyph_fini); - scaled_glyph->dev_private = glyph_priv; /* We need to load color to determine if this is a color format. */ int color_flag = 0; @@ -3461,8 +3460,8 @@ _cairo_ft_scaled_glyph_init (void *abstract_font, goto FAIL; } - /* scaled_glyph->dev_private is intialized by _cairo_ft_scaled_glyph_init_metrics() */ - glyph_priv = scaled_glyph->dev_private; + glyph_priv = (cairo_ft_glyph_private_t *) _cairo_scaled_glyph_find_private (scaled_glyph, + &ft_glyph_private_key); assert (glyph_priv != NULL); if (info & CAIRO_SCALED_GLYPH_INFO_RECORDING_SURFACE) { @@ -3514,6 +3513,7 @@ _cairo_ft_scaled_glyph_init (void *abstract_font, } else { status = _cairo_ft_scaled_glyph_init_surface (scaled_font, scaled_glyph, + glyph_priv, CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE, face, foreground_color, @@ -3527,6 +3527,7 @@ _cairo_ft_scaled_glyph_init (void *abstract_font, if (info & CAIRO_SCALED_GLYPH_INFO_SURFACE) { status = _cairo_ft_scaled_glyph_init_surface (scaled_font, scaled_glyph, + glyph_priv, CAIRO_SCALED_GLYPH_INFO_SURFACE, face, NULL, /* foreground color */ From gitlab-mirror at kemper.freedesktop.org Sat May 27 10:20:59 2023 From: gitlab-mirror at kemper.freedesktop.org (GitLab Mirror) Date: Sat, 27 May 2023 10:20:59 +0000 (UTC) Subject: [cairo-commit] 2 commits - src/cairo-mutex.c src/cairo-mutex-private.h Message-ID: <20230527102059.43A2676189@kemper.freedesktop.org> src/cairo-mutex-private.h | 2 +- src/cairo-mutex.c | 41 ++++++++++++++++++++++++++++++++++------- 2 files changed, 35 insertions(+), 8 deletions(-) New commits: commit 0d7e0dcb175fd24e32600cb9cf0d97845a0c727f Merge: 9831eba0e 46e538ddb Author: Adrian Johnson Date: Sat May 27 10:20:57 2023 +0000 Merge branch 'issue-782' into 'master' Use a spinlock to prevent race condition when initializing mutexes Closes #782 See merge request cairo/cairo!478 commit 46e538ddbbf5ad02cb6a9d5ff4a483ba63660dc5 Author: Adrian Johnson Date: Sat May 27 17:59:21 2023 +0930 Use a spinlock to prevent race condition when initializing mutexes Fixes #782 diff --git a/src/cairo-mutex-private.h b/src/cairo-mutex-private.h index 61a7160a0..65732a180 100644 --- a/src/cairo-mutex-private.h +++ b/src/cairo-mutex-private.h @@ -53,7 +53,7 @@ cairo_private void _cairo_mutex_finalize (void); #endif /* only if using static initializer and/or finalizer define the boolean */ #if _CAIRO_MUTEX_IMPL_USE_STATIC_INITIALIZER || _CAIRO_MUTEX_IMPL_USE_STATIC_FINALIZER - cairo_private extern cairo_bool_t _cairo_mutex_initialized; + cairo_private extern int _cairo_mutex_initialized; #endif /* Finally, extern the static mutexes and undef */ diff --git a/src/cairo-mutex.c b/src/cairo-mutex.c index 0a31dced3..5b6debeca 100644 --- a/src/cairo-mutex.c +++ b/src/cairo-mutex.c @@ -41,13 +41,17 @@ #if _CAIRO_MUTEX_IMPL_USE_STATIC_INITIALIZER || _CAIRO_MUTEX_IMPL_USE_STATIC_FINALIZER +#define _CAIRO_MUTEX_UNINITIALIZED 0 +#define _CAIRO_MUTEX_INITIALIZING 1 +#define _CAIRO_MUTEX_INITIALIZED 2 + # if _CAIRO_MUTEX_IMPL_USE_STATIC_INITIALIZER -# define _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE FALSE +# define _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE _CAIRO_MUTEX_UNINITIALIZED # else -# define _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE TRUE +# define _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE _CAIRO_MUTEX_INITIALIZED # endif -cairo_bool_t _cairo_mutex_initialized = _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE; +int _cairo_mutex_initialized = _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE; # undef _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VALUE @@ -56,24 +60,47 @@ cairo_bool_t _cairo_mutex_initialized = _CAIRO_MUTEX_IMPL_INITIALIZED_DEFAULT_VA #if _CAIRO_MUTEX_IMPL_USE_STATIC_INITIALIZER void _cairo_mutex_initialize (void) { - if (_cairo_mutex_initialized) +#if HAS_ATOMIC_OPS + int old_value; + do { + old_value = _cairo_atomic_int_cmpxchg_return_old (&_cairo_mutex_initialized, + _CAIRO_MUTEX_UNINITIALIZED, + _CAIRO_MUTEX_INITIALIZING); + if (old_value == _CAIRO_MUTEX_INITIALIZED) + return; + + } while (old_value == _CAIRO_MUTEX_INITIALIZING); +#else + if (_cairo_mutex_initialized == _CAIRO_MUTEX_INITIALIZED) return; - _cairo_mutex_initialized = TRUE; + _cairo_mutex_initialized = _CAIRO_MUTEX_INITIALIZED; +#endif #define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_INIT (mutex); #include "cairo-mutex-list-private.h" #undef CAIRO_MUTEX_DECLARE + +#if HAS_ATOMIC_OPS + _cairo_atomic_int_set_relaxed (&_cairo_mutex_initialized, _CAIRO_MUTEX_INITIALIZED); +#endif } #endif #if _CAIRO_MUTEX_IMPL_USE_STATIC_FINALIZER void _cairo_mutex_finalize (void) { - if (!_cairo_mutex_initialized) +#if HAS_ATOMIC_OPS + if (!_cairo_atomic_int_cmpxchg (&_cairo_mutex_initialized, + _CAIRO_MUTEX_INITIALIZED, + _CAIRO_MUTEX_UNINITIALIZED)) + return; +#else + if (_cairo_mutex_initialized != _CAIRO_MUTEX_INITIALIZED) return; - _cairo_mutex_initialized = FALSE; + _cairo_mutex_initialized = _CAIRO_MUTEX_UNINITIALIZED; +#endif #define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_FINI (mutex); #include "cairo-mutex-list-private.h" From gitlab-mirror at kemper.freedesktop.org Tue May 30 22:00:05 2023 From: gitlab-mirror at kemper.freedesktop.org (GitLab Mirror) Date: Tue, 30 May 2023 22:00:05 +0000 (UTC) Subject: [cairo-commit] 2 commits - .gitlab-ci.yml Message-ID: <20230530220005.175797617D@kemper.freedesktop.org> .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit a2def1bd065419d7be1b1aca6d209b182925be62 Merge: 0d7e0dcb1 bb5577616 Author: Adrian Johnson Date: Tue May 30 22:00:03 2023 +0000 Merge branch 'ci-bump-windows-image' into 'master' ci: bump windows image to latest See merge request cairo/cairo!480 commit bb5577616c08b4bf1aceb229f4d30618b5b08a01 Author: Tim-Philipp M?ller Date: Mon May 29 11:06:06 2023 +0100 ci: bump windows image to latest diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 894650d75..960b95527 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,7 @@ variables: # TODO: should probably get its own image at some point instead of reusing the GStreamer one # See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-image-tags.yml for latest - WINDOWS_IMAGE: "registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2023-04-03.0-main" + WINDOWS_IMAGE: "registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2023-04-21.0-main" DEFAULT_MESON_ARGS: > --default-library=both From gitlab-mirror at kemper.freedesktop.org Wed May 31 15:06:53 2023 From: gitlab-mirror at kemper.freedesktop.org (GitLab Mirror) Date: Wed, 31 May 2023 15:06:53 +0000 (UTC) Subject: [cairo-commit] 2 commits - src/win32 Message-ID: <20230531150653.4E61D7617D@kemper.freedesktop.org> src/win32/dw-extra.h | 2 -- 1 file changed, 2 deletions(-) New commits: commit 38873d256821558013bd7c6e5f01cc92dd12fd4a Merge: a2def1bd0 50225f55b Author: Uli Schlachter Date: Wed May 31 15:06:51 2023 +0000 Merge branch 'fix-leftover' into 'master' Remove stray #error in dw-extra.h See merge request cairo/cairo!481 commit 50225f55baa5d0f282204ce055b69479e51a75b8 Author: Luca Bacci Date: Wed May 31 12:28:56 2023 +0200 Remove stray #error in dw-extra.h diff --git a/src/win32/dw-extra.h b/src/win32/dw-extra.h index c79e6389c..424fb606d 100644 --- a/src/win32/dw-extra.h +++ b/src/win32/dw-extra.h @@ -21,8 +21,6 @@ struct DWRITE_COLOR_GLYPH_RUN1_WORKAROUND : DWRITE_COLOR_GLYPH_RUN #else typedef DWRITE_COLOR_GLYPH_RUN1 DWRITE_COLOR_GLYPH_RUN1_WORKAROUND; -#error - #endif DEFINE_ENUM_FLAG_OPERATORS(DWRITE_GLYPH_IMAGE_FORMATS);