[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