TODO | 3 +++ configure.ac | 1 + src/Makefile.am | 23 +++++++++++++++++++++-- src/hb-blob.cc | 2 +- src/hb-blob.h | 2 +- src/hb-buffer-private.hh | 4 ++-- src/hb-buffer.h | 6 +++--- src/hb-common.cc | 2 +- src/hb-common.h | 4 ++-- src/hb-font-private.hh | 6 +++--- src/hb-font.cc | 2 +- src/hb-font.h | 8 ++++---- src/hb-mutex-private.hh | 9 +++++++++ src/hb-object-private.hh | 32 ++++++++++++++++++++++++++------ src/hb-set-private.hh | 2 +- src/hb-set.h | 2 +- src/hb-shape.h | 2 +- src/hb-unicode-private.hh | 2 +- src/hb-unicode.h | 2 +- test/api/hb-test.h | 2 ++ 20 files changed, 85 insertions(+), 31 deletions(-)
New commits: commit 49f8e0cd9a5493ae26857c43bac0711cdf47c80d Author: Behdad Esfahbod <beh...@behdad.org> Date: Sat Jun 16 15:40:03 2012 -0400 GStaticMutex is deprecated diff --git a/src/hb-mutex-private.hh b/src/hb-mutex-private.hh index f9bd679..8efd27e 100644 --- a/src/hb-mutex-private.hh +++ b/src/hb-mutex-private.hh @@ -67,12 +67,21 @@ typedef pthread_mutex_t hb_mutex_impl_t; #elif !defined(HB_NO_MT) && defined(HAVE_GLIB) #include <glib.h> +#if !GLIB_CHECK_VERSION(2,32,0) typedef GStaticMutex hb_mutex_impl_t; #define HB_MUTEX_IMPL_INIT G_STATIC_MUTEX_INIT #define hb_mutex_impl_init(M) g_static_mutex_init (M) #define hb_mutex_impl_lock(M) g_static_mutex_lock (M) #define hb_mutex_impl_unlock(M) g_static_mutex_unlock (M) #define hb_mutex_impl_finish(M) g_static_mutex_free (M) +#else +typedef GMutex hb_mutex_impl_t; +#define HB_MUTEX_IMPL_INIT {0} +#define hb_mutex_impl_init(M) g_mutex_init (M) +#define hb_mutex_impl_lock(M) g_mutex_lock (M) +#define hb_mutex_impl_unlock(M) g_mutex_unlock (M) +#define hb_mutex_impl_finish(M) g_mutex_clear (M) +#endif #elif !defined(HB_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES) commit 5e113a4b7921ced6af2d53460a7a2f1d0185c02a Author: Behdad Esfahbod <beh...@behdad.org> Date: Sat Jun 16 15:26:13 2012 -0400 g_thread_init() is deprecated diff --git a/test/api/hb-test.h b/test/api/hb-test.h index f36d53b..d569757 100644 --- a/test/api/hb-test.h +++ b/test/api/hb-test.h @@ -75,7 +75,9 @@ srcdir (void) static inline void hb_test_init (int *argc, char ***argv) { +#if !GLIB_CHECK_VERSION(2,32,0) g_thread_init (NULL); +#endif g_test_init (argc, argv, NULL); } commit 1bc1cb3603167f5da309336f7018c8b0608ac104 Author: Behdad Esfahbod <beh...@behdad.org> Date: Sat Jun 16 15:21:55 2012 -0400 Make source more digestable for gobject-introspection diff --git a/src/hb-blob.cc b/src/hb-blob.cc index 3cc2d9d..b6e696b 100644 --- a/src/hb-blob.cc +++ b/src/hb-blob.cc @@ -46,7 +46,7 @@ #endif -struct _hb_blob_t { +struct hb_blob_t { hb_object_header_t header; ASSERT_POD (); diff --git a/src/hb-blob.h b/src/hb-blob.h index 360310b..1a93baa 100644 --- a/src/hb-blob.h +++ b/src/hb-blob.h @@ -43,7 +43,7 @@ typedef enum { HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE } hb_memory_mode_t; -typedef struct _hb_blob_t hb_blob_t; +typedef struct hb_blob_t hb_blob_t; hb_blob_t * hb_blob_create (const char *data, diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh index 39b6e5c..9bd80e0 100644 --- a/src/hb-buffer-private.hh +++ b/src/hb-buffer-private.hh @@ -40,7 +40,7 @@ ASSERT_STATIC (sizeof (hb_glyph_info_t) == 20); ASSERT_STATIC (sizeof (hb_glyph_info_t) == sizeof (hb_glyph_position_t)); -typedef struct _hb_segment_properties_t { +typedef struct hb_segment_properties_t { hb_direction_t direction; hb_script_t script; hb_language_t language; @@ -48,7 +48,7 @@ typedef struct _hb_segment_properties_t { } hb_segment_properties_t; -struct _hb_buffer_t { +struct hb_buffer_t { hb_object_header_t header; ASSERT_POD (); diff --git a/src/hb-buffer.h b/src/hb-buffer.h index fe53197..73adc2e 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -40,9 +40,9 @@ HB_BEGIN_DECLS -typedef struct _hb_buffer_t hb_buffer_t; +typedef struct hb_buffer_t hb_buffer_t; -typedef struct _hb_glyph_info_t { +typedef struct hb_glyph_info_t { hb_codepoint_t codepoint; hb_mask_t mask; uint32_t cluster; @@ -52,7 +52,7 @@ typedef struct _hb_glyph_info_t { hb_var_int_t var2; } hb_glyph_info_t; -typedef struct _hb_glyph_position_t { +typedef struct hb_glyph_position_t { hb_position_t x_advance; hb_position_t y_advance; hb_position_t x_offset; diff --git a/src/hb-common.cc b/src/hb-common.cc index 331d255..baf5977 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -98,7 +98,7 @@ hb_direction_to_string (hb_direction_t direction) /* hb_language_t */ -struct _hb_language_t { +struct hb_language_impl_t { const char s[1]; }; diff --git a/src/hb-common.h b/src/hb-common.h index 562b04c..78bc43c 100644 --- a/src/hb-common.h +++ b/src/hb-common.h @@ -124,7 +124,7 @@ hb_direction_to_string (hb_direction_t direction); /* hb_language_t */ -typedef struct _hb_language_t *hb_language_t; +typedef struct hb_language_impl_t *hb_language_t; /* len=-1 means str is NUL-terminated */ hb_language_t @@ -333,7 +333,7 @@ hb_script_get_horizontal_direction (hb_script_t script); /* User data */ -typedef struct _hb_user_data_key_t { +typedef struct hb_user_data_key_t { /*< private >*/ char unused; } hb_user_data_key_t; diff --git a/src/hb-font-private.hh b/src/hb-font-private.hh index 91a4304..2f74cfa 100644 --- a/src/hb-font-private.hh +++ b/src/hb-font-private.hh @@ -54,7 +54,7 @@ HB_FONT_FUNC_IMPLEMENT (glyph_from_name) \ /* ^--- Add new callbacks here */ -struct _hb_font_funcs_t { +struct hb_font_funcs_t { hb_object_header_t header; ASSERT_POD (); @@ -86,7 +86,7 @@ struct _hb_font_funcs_t { * hb_face_t */ -struct _hb_face_t { +struct hb_face_t { hb_object_header_t header; ASSERT_POD (); @@ -107,7 +107,7 @@ struct _hb_face_t { * hb_font_t */ -struct _hb_font_t { +struct hb_font_t { hb_object_header_t header; ASSERT_POD (); diff --git a/src/hb-font.cc b/src/hb-font.cc index 109caff..7c62fbe 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -619,7 +619,7 @@ hb_face_create_for_tables (hb_reference_table_func_t reference_table, } -typedef struct _hb_face_for_data_closure_t { +typedef struct hb_face_for_data_closure_t { hb_blob_t *blob; unsigned int index; } hb_face_for_data_closure_t; diff --git a/src/hb-font.h b/src/hb-font.h index b98759b..ae4fc9b 100644 --- a/src/hb-font.h +++ b/src/hb-font.h @@ -37,8 +37,8 @@ HB_BEGIN_DECLS -typedef struct _hb_face_t hb_face_t; -typedef struct _hb_font_t hb_font_t; +typedef struct hb_face_t hb_face_t; +typedef struct hb_font_t hb_font_t; /* * hb_face_t @@ -110,7 +110,7 @@ hb_face_get_upem (hb_face_t *face); * hb_font_funcs_t */ -typedef struct _hb_font_funcs_t hb_font_funcs_t; +typedef struct hb_font_funcs_t hb_font_funcs_t; hb_font_funcs_t * hb_font_funcs_create (void); @@ -145,7 +145,7 @@ hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); /* funcs */ -typedef struct _hb_glyph_extents_t +typedef struct hb_glyph_extents_t { hb_position_t x_bearing; hb_position_t y_bearing; diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh index 7f478e4..3b3f7fe 100644 --- a/src/hb-set-private.hh +++ b/src/hb-set-private.hh @@ -34,7 +34,7 @@ /* TODO Make this faster and memmory efficient. */ -struct _hb_set_t +struct hb_set_t { hb_object_header_t header; ASSERT_POD (); diff --git a/src/hb-set.h b/src/hb-set.h index 9f849cf..1838889 100644 --- a/src/hb-set.h +++ b/src/hb-set.h @@ -36,7 +36,7 @@ HB_BEGIN_DECLS -typedef struct _hb_set_t hb_set_t; +typedef struct hb_set_t hb_set_t; hb_set_t * diff --git a/src/hb-shape.h b/src/hb-shape.h index 1a0d6cf..84bf3e7 100644 --- a/src/hb-shape.h +++ b/src/hb-shape.h @@ -38,7 +38,7 @@ HB_BEGIN_DECLS -typedef struct _hb_feature_t { +typedef struct hb_feature_t { hb_tag_t tag; uint32_t value; unsigned int start; diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh index 8a34174..eaf151a 100644 --- a/src/hb-unicode-private.hh +++ b/src/hb-unicode-private.hh @@ -61,7 +61,7 @@ HB_UNICODE_FUNC_IMPLEMENT (hb_script_t, script) \ /* ^--- Add new simple callbacks here */ -struct _hb_unicode_funcs_t { +struct hb_unicode_funcs_t { hb_object_header_t header; ASSERT_POD (); diff --git a/src/hb-unicode.h b/src/hb-unicode.h index 205e4c7..808c6e1 100644 --- a/src/hb-unicode.h +++ b/src/hb-unicode.h @@ -44,7 +44,7 @@ HB_BEGIN_DECLS * hb_unicode_funcs_t */ -typedef struct _hb_unicode_funcs_t hb_unicode_funcs_t; +typedef struct hb_unicode_funcs_t hb_unicode_funcs_t; /* commit 84d781e54cc75c81a06ba43fd7b1a74b8c7d9591 Author: Behdad Esfahbod <beh...@behdad.org> Date: Sat Jun 16 15:21:41 2012 -0400 Flesh out gobject-introspection stuff a bit diff --git a/configure.ac b/configure.ac index 2fb058f..8911e25 100644 --- a/configure.ac +++ b/configure.ac @@ -49,6 +49,7 @@ m4_define([hb_libtool_current], HB_LIBTOOL_VERSION_INFO=hb_libtool_current:hb_libtool_revision:hb_libtool_age AC_SUBST(HB_LIBTOOL_VERSION_INFO) +GOBJECT_INTROSPECTION_CHECK([0.9.0]) dnl GTK_DOC_CHECK([1.15],[--flavour no-tmpl]) # Functions and headers diff --git a/src/Makefile.am b/src/Makefile.am index 98c6cd5..2326b40 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,6 +6,7 @@ EXTRA_DIST = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = +DISTCHECK_CONFIGURE_FLAGS = --enable-introspection # The following warning options are useful for debugging: -Wpadded -Wcast-align #AM_CXXFLAGS = @@ -208,8 +209,26 @@ TESTS_ENVIRONMENT = \ HBHEADERS="$(HBHEADERS)" \ $(NULL) -scan: - g-ir-scanner $(HBCFLAGS) $(HBHEADERS) -n hb --strip-prefix=hb --library libharfbuzz.la +-include $(INTROSPECTION_MAKEFILE) +INTROSPECTION_GIRS = hb-1.0.gir +INTROSPECTION_SCANNER_ARGS = -I$(srcdir) -n hb --identifier-prefix=hb_ +INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) +if HAVE_INTROSPECTION + +hb-1.0.gir: libharfbuzz.la +hb_1_0_gir_INCLUDES = GObject-2.0 +hb_1_0_gir_CFLAGS = $(INCLUDES) $(HBCFLAGS) -DHB_H -DHB_H_IN -DHB_OT_H -DHB_OT_H_IN +hb_1_0_gir_LIBS = libharfbuzz.la +hb_1_0_gir_FILES = $(HBHEADERS) + +girdir = $(datadir)/gir-1.0 +gir_DATA = $(INTROSPECTION_GIRS) + +typelibdir = $(libdir)/girepository-1.0 +typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) + +CLEANFILES += $(gir_DATA) $(typelib_DATA) +endif -include $(top_srcdir)/git.mk commit 49ee12ccd00870d4976339dc546c74eaf08a8fc0 Author: Behdad Esfahbod <beh...@behdad.org> Date: Sat Jun 16 14:53:51 2012 -0400 Add TODO item diff --git a/TODO b/TODO index b9c2600..7b02c55 100644 --- a/TODO +++ b/TODO @@ -85,6 +85,7 @@ API additions hb-view / hb-shape enhancements: =============================== +- --output-format should list available formats. - Add --width, --height, --auto-size, --align, etc? - Add XML and JSON formats to hb-shape - --features="init=medi=isol=fina=0" commit d3c8115d1ad09404b8970b98e6b5ab74510a35f6 Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Jun 12 09:52:57 2012 -0400 Minor diff --git a/TODO b/TODO index c171c94..b9c2600 100644 --- a/TODO +++ b/TODO @@ -51,6 +51,8 @@ API issues to fix before 1.0: API additions ============= +- Language to/from script. + - Buffer (de)serialize API ala hb-shape? - Move feature parsing from util into the library commit 2cf301968cb8c1150cead0ab909457cdd3ee2d01 Author: Behdad Esfahbod <beh...@behdad.org> Date: Sat Jun 9 14:58:01 2012 -0400 Add hb_object_lock/unlock() diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh index e7f6eda..c48f242 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 <typename Type> +static inline void hb_object_lock (Type *obj) +{ + hb_object_trace (obj, HB_FUNC); + return obj->header.lock (); +} +template <typename Type> +static inline void hb_object_unlock (Type *obj) +{ + hb_object_trace (obj, HB_FUNC); + return obj->header.unlock (); +} +template <typename Type> static inline bool hb_object_set_user_data (Type *obj, hb_user_data_key_t *key, void * data, _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/harfbuzz