[cairo] [PATCH] Initialize mutexes for static builds for win32
Uli Schlachter
psychon at znc.in
Sat Jun 10 12:38:06 UTC 2017
On 07.06.2017 16:01, Alexander Täschner wrote:
> For static builds for win32 the mutexes are not initialized (for dynamic
> builds its done when the DLL is loaded). Therefore the patch add
> initialization to the create surface calls.
>
> ---
> src/win32/cairo-win32-display-surface.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
> diff --git a/src/win32/cairo-win32-display-surface.c
> b/src/win32/cairo-win32-display-surface.c
> index 025b2c9..56f0e65 100644
> --- a/src/win32/cairo-win32-display-surface.c
> +++ b/src/win32/cairo-win32-display-surface.c
> @@ -953,7 +953,9 @@ cairo_win32_surface_create_with_format (HDC hdc,
> cairo_format_t format)
> case CAIRO_FORMAT_RGB24:
> break;
> }
> -
> +#if CAIRO_WIN32_STATIC_BUILD
> + CAIRO_MUTEX_INITIALIZE ();
> +#endif
> surface = malloc (sizeof (*surface));
> if (surface == NULL)
> return _cairo_surface_create_in_error (_cairo_error
> (CAIRO_STATUS_NO_MEMORY));
> @@ -1031,7 +1033,9 @@ cairo_win32_surface_create_with_dib (cairo_format_t
> format,
> {
> if (! CAIRO_FORMAT_VALID (format))
> return _cairo_surface_create_in_error (_cairo_error
> (CAIRO_STATUS_INVALID_FORMAT));
> -
> +#if CAIRO_WIN32_STATIC_BUILD
> + CAIRO_MUTEX_INITIALIZE ();
> +#endif
> return _cairo_win32_display_surface_create_for_dc (NULL, format,
> width, height);
> }
I would suggest doing the above unconditionally (without the #if).
Also, how about moving this to the beginning of
_cairo_win32_device_get()? That sounds central enough that every code
path in the win32 backend should go through it.
Uli
--
99 little bugs in the code
99 little bugs in the code
Take one down, patch it around
117 little bugs in the code
-- @irqed
More information about the cairo
mailing list