diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh index e7f6eda62..c48f24231 100644 --- a/src/hb-object-private.hh +++ b/src/hb-object-private.hh @@ -103,7 +103,7 @@ struct hb_user_data_array_t struct hb_object_header_t { hb_reference_count_t ref_count; - hb_mutex_t lock; + hb_mutex_t mutex; hb_user_data_array_t user_data; #define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INVALID, HB_MUTEX_INIT, HB_USER_DATA_ARRAY_INIT} @@ -119,7 +119,7 @@ struct hb_object_header_t inline void init (void) { ref_count.init (1); - lock.init (); + mutex.init (); user_data.init (); } @@ -140,12 +140,20 @@ struct hb_object_header_t return false; ref_count.finish (); /* Do this before user_data */ - user_data.finish (lock); - lock.finish (); + user_data.finish (mutex); + mutex.finish (); return true; } + inline void lock (void) { + mutex.lock (); + } + + inline void unlock (void) { + mutex.unlock (); + } + inline bool set_user_data (hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy_func, @@ -153,14 +161,14 @@ struct hb_object_header_t if (unlikely (!this || this->is_inert ())) return false; - return user_data.set (key, data, destroy_func, replace, lock); + return user_data.set (key, data, destroy_func, replace, mutex); } inline void *get_user_data (hb_user_data_key_t *key) { if (unlikely (!this || this->is_inert ())) return NULL; - return user_data.get (key, lock); + return user_data.get (key, mutex); } inline void trace (const char *function) const { @@ -211,6 +219,18 @@ static inline bool hb_object_destroy (Type *obj) return obj->header.destroy (); } template +static inline void hb_object_lock (Type *obj) +{ + hb_object_trace (obj, HB_FUNC); + return obj->header.lock (); +} +template +static inline void hb_object_unlock (Type *obj) +{ + hb_object_trace (obj, HB_FUNC); + return obj->header.unlock (); +} +template static inline bool hb_object_set_user_data (Type *obj, hb_user_data_key_t *key, void * data,