From 8d70312c7b899131c3aafa7a43527ef3ced33bfe Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 10 Aug 2009 23:50:51 -0400 Subject: [PATCH] [HB] Add hb_font_funcs_make_immutable() --- src/hb-font-private.h | 4 ++++ src/hb-font.cc | 17 +++++++++++++++-- src/hb-font.h | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/hb-font-private.h b/src/hb-font-private.h index 6ec1e997f..efd710985 100644 --- a/src/hb-font-private.h +++ b/src/hb-font-private.h @@ -43,6 +43,8 @@ HB_BEGIN_DECLS struct _hb_font_funcs_t { hb_reference_count_t ref_count; + hb_bool_t immutable; + /* hb_font_get_glyph_func_t glyph_func; hb_font_get_contour_point_func_t contour_point_func; @@ -51,6 +53,8 @@ struct _hb_font_funcs_t { */ }; +HB_INTERNAL hb_font_funcs_t +_hb_font_funcs_nil; /* * hb_face_t diff --git a/src/hb-font.cc b/src/hb-font.cc index 784dc5647..b090ad972 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -37,8 +37,11 @@ * hb_font_funcs_t */ -static hb_font_funcs_t _hb_font_funcs_nil = { - HB_REFERENCE_COUNT_INVALID /* ref_count */ +hb_font_funcs_t _hb_font_funcs_nil = { + HB_REFERENCE_COUNT_INVALID, /* ref_count */ + + TRUE /* immutable */ + /* hb_font_get_glyph_func_t glyph_func; hb_font_get_contour_point_func_t contour_point_func; @@ -90,10 +93,20 @@ hb_font_funcs_copy (hb_font_funcs_t *other_ffuncs) /* re-init refcount */ HB_OBJECT_DO_INIT (ffuncs); + ffuncs->immutable = FALSE; return ffuncs; } +void +hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs) +{ + if (HB_OBJECT_IS_INERT (ffuncs)) + return; + + ffuncs->immutable = TRUE; +} + /* diff --git a/src/hb-font.h b/src/hb-font.h index 4535d1b1b..26e49bb7c 100644 --- a/src/hb-font.h +++ b/src/hb-font.h @@ -91,6 +91,9 @@ hb_font_funcs_destroy (hb_font_funcs_t *ffuncs); hb_font_funcs_t * hb_font_funcs_copy (hb_font_funcs_t *ffuncs); +void +hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs); + /* void