<div dir="ltr"><div>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.</div><div><br>---<br> src/win32/cairo-win32-display-surface.c | 8 ++++++--<br> 1 file changed, 6 insertions(+), 2 deletions(-)</div><div>diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c<br>index 025b2c9..56f0e65 100644<br>--- a/src/win32/cairo-win32-display-surface.c<br>+++ b/src/win32/cairo-win32-display-surface.c<br>@@ -953,7 +953,9 @@ cairo_win32_surface_create_with_format (HDC hdc, cairo_format_t format)<br>     case CAIRO_FORMAT_RGB24:<br>  break;<br>     }<br>-<br>+#if CAIRO_WIN32_STATIC_BUILD<br>+    CAIRO_MUTEX_INITIALIZE ();<br>+#endif<br>     surface = malloc (sizeof (*surface));<br>     if (surface == NULL)<br>  return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));<br>@@ -1031,7 +1033,9 @@ cairo_win32_surface_create_with_dib (cairo_format_t format,<br> {<br>     if (! CAIRO_FORMAT_VALID (format))<br>  return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT));<br>-<br>+#if CAIRO_WIN32_STATIC_BUILD<br>+    CAIRO_MUTEX_INITIALIZE ();<br>+#endif<br>     return _cairo_win32_display_surface_create_for_dc (NULL, format, width, height);<br> }<br> <br>-- <br>2.10.2.windows.1</div><div><span><br></span></div></div>