[HB] Add hb_font_funcs_make_immutable()
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 11 Aug 2009 03:50:51 +0000 (23:50 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:40 +0000 (14:40 -0500)
src/hb-font-private.h
src/hb-font.cc
src/hb-font.h

index 6ec1e99..efd7109 100644 (file)
@@ -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
index 784dc56..b090ad9 100644 (file)
  * 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;
+}
+
 
 
 /*
index 4535d1b..26e49bb 100644 (file)
@@ -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