Re: [PATCH] Initialize mutexes for static builds for win32

Uli Schlachter <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
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
-- 
cairo mailing list
[email protected]
https://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.