diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c index fa18ffd53..8be1cae7b 100644 --- a/src/cairo-ft-font.c +++ b/src/cairo-ft-font.c @@ -334,7 +334,7 @@ _cairo_ft_unscaled_font_init (cairo_ft_unscaled_font_t *unscaled, } unscaled->have_scale = FALSE; - CAIRO_MUTEX_INIT (&unscaled->mutex); + CAIRO_MUTEX_INIT (unscaled->mutex); unscaled->lock_count = 0; unscaled->faces = NULL; @@ -369,7 +369,7 @@ _cairo_ft_unscaled_font_fini (cairo_ft_unscaled_font_t *unscaled) unscaled->filename = NULL; } - CAIRO_MUTEX_FINI (&unscaled->mutex); + CAIRO_MUTEX_FINI (unscaled->mutex); } static int diff --git a/src/cairo-mutex-private.h b/src/cairo-mutex-private.h index 797906364..c0a8a37f1 100644 --- a/src/cairo-mutex-private.h +++ b/src/cairo-mutex-private.h @@ -61,7 +61,7 @@ CAIRO_BEGIN_DECLS #ifndef CAIRO_MUTEX_INIT # define CAIRO_MUTEX_INIT(mutex) do { \ cairo_mutex_t _tmp_mutex = CAIRO_MUTEX_NIL_INITIALIZER; \ - memcpy ((mutex), &_tmp_mutex, sizeof (_tmp_mutex)); \ + memcpy (&(mutex), &_tmp_mutex, sizeof (_tmp_mutex)); \ } while (0) #endif diff --git a/src/cairo-mutex-type-private.h b/src/cairo-mutex-type-private.h index a98af2830..d3c27c152 100644 --- a/src/cairo-mutex-type-private.h +++ b/src/cairo-mutex-type-private.h @@ -76,7 +76,7 @@ CAIRO_BEGIN_DECLS # define CAIRO_MUTEX_INITIALIZE() CAIRO_MUTEX_NOOP # define CAIRO_MUTEX_LOCK(mutex) pthread_mutex_lock (&(mutex)) # define CAIRO_MUTEX_UNLOCK(mutex) pthread_mutex_unlock (&(mutex)) -# define CAIRO_MUTEX_FINI(mutex) pthread_mutex_destroy (mutex) +# define CAIRO_MUTEX_FINI(mutex) pthread_mutex_destroy (&(mutex)) # define CAIRO_MUTEX_NIL_INITIALIZER PTHREAD_MUTEX_INITIALIZER #elif HAVE_WINDOWS_H /*******************************************************/ @@ -87,8 +87,8 @@ CAIRO_BEGIN_DECLS # define CAIRO_MUTEX_LOCK(mutex) EnterCriticalSection (&(mutex)) # define CAIRO_MUTEX_UNLOCK(mutex) LeaveCriticalSection (&(mutex)) -# define CAIRO_MUTEX_INIT(mutex) InitializeCriticalSection (mutex) -# define CAIRO_MUTEX_FINI(mutex) DeleteCriticalSection (mutex) +# define CAIRO_MUTEX_INIT(mutex) InitializeCriticalSection (&(mutex)) +# define CAIRO_MUTEX_FINI(mutex) DeleteCriticalSection (&(mutex)) # define CAIRO_MUTEX_NIL_INITIALIZER { NULL, 0, 0, NULL, NULL, 0 } #elif defined __OS2__ /******************************************************/ @@ -101,13 +101,8 @@ CAIRO_BEGIN_DECLS # define CAIRO_MUTEX_LOCK(mutex) DosRequestMutexSem(mutex, SEM_INDEFINITE_WAIT) # define CAIRO_MUTEX_UNLOCK(mutex) DosReleaseMutexSem(mutex) -# define CAIRO_MUTEX_INIT(mutex) DosCreateMutexSem (NULL, mutex, 0L, FALSE) -# define CAIRO_MUTEX_FINI(mutex) do { \ - if (0 != (mutex)) { \ - DosCloseMutexSem (*(mutex)); \ - (*(mutex)) = 0; \ - } \ -} while (0) +# define CAIRO_MUTEX_INIT(mutex) DosCreateMutexSem (NULL, &(mutex), 0L, FALSE) +# define CAIRO_MUTEX_FINI(mutex) DosCloseMutexSem (mutex) # define CAIRO_MUTEX_NIL_INITIALIZER 0 #elif CAIRO_HAS_BEOS_SURFACE /***********************************************/ @@ -116,8 +111,8 @@ CAIRO_BEGIN_DECLS # define CAIRO_MUTEX_LOCK(mutex) (mutex)->Lock() # define CAIRO_MUTEX_UNLOCK(mutex) (mutex)->Unlock() -# define CAIRO_MUTEX_INIT(mutex) (*(mutex)) = new BLocker() -# define CAIRO_MUTEX_FINI(mutex) delete (*(mutex)) +# define CAIRO_MUTEX_INIT(mutex) (mutex) = new BLocker() +# define CAIRO_MUTEX_FINI(mutex) delete (mutex) # define CAIRO_MUTEX_NIL_INITIALIZER NULL #else /**********************************************************************/ diff --git a/src/cairo-mutex.c b/src/cairo-mutex.c index dbdfc5cb4..df21af395 100644 --- a/src/cairo-mutex.c +++ b/src/cairo-mutex.c @@ -47,7 +47,7 @@ void _cairo_mutex_initialize (void) _cairo_mutex_initialized = TRUE; -#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_INIT (&mutex); +#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_INIT (mutex); #include "cairo-mutex-list-private.h" #undef CAIRO_MUTEX_DECLARE } @@ -59,7 +59,7 @@ void _cairo_mutex_finalize (void) _cairo_mutex_initialized = FALSE; -#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_FINI (&mutex) +#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_FINI (mutex) #include "cairo-mutex-list-private.h" #undef CAIRO_MUTEX_DECLARE } diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c index e3ad070fa..1e055631a 100644 --- a/src/cairo-scaled-font.c +++ b/src/cairo-scaled-font.c @@ -374,7 +374,7 @@ _cairo_scaled_font_init (cairo_scaled_font_t *scaled_font, cairo_font_face_reference (font_face); - CAIRO_MUTEX_INIT (&scaled_font->mutex); + CAIRO_MUTEX_INIT (scaled_font->mutex); scaled_font->surface_backend = NULL; scaled_font->surface_private = NULL; @@ -436,7 +436,7 @@ _cairo_scaled_font_fini (cairo_scaled_font_t *scaled_font) if (scaled_font->glyphs != NULL) _cairo_cache_destroy (scaled_font->glyphs); - CAIRO_MUTEX_FINI (&scaled_font->mutex); + CAIRO_MUTEX_FINI (scaled_font->mutex); if (scaled_font->surface_backend != NULL && scaled_font->surface_backend->scaled_font_fini != NULL)