From 8a1e28e4e9887c799c6b34b8c0339cacc33d41cc Mon Sep 17 00:00:00 2001 From: Sergey Udaltsov Date: Sun, 28 Jun 2009 13:29:44 +0000 Subject: using binding-friendly glib-mkenums, b.fd.o#21578 --- ChangeLog | 9 ++++++++ libxklavier/Makefile.am | 59 ++++++++++++++++++++++++++++++++++++------------- libxklavier/xklavier.c | 19 +--------------- libxklavier/xklavier.h | 1 + 4 files changed, 55 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index aa2bd5b..c9adaeb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-05-06 Sayamindu Dasgupta + + https://bugs.freedesktop.org/show_bug.cgi?id=21578 - Make use + of glib-mkenums + * libxklavier/Makefile.am: Use glib-mkenums + * libxklavier/xklavier.c (xkl_engine_class_init): Do not use + g_flags_register_static for XklEngineFeatures here. + * libxklavier/xklavier.h: Include xkl-enum-types.h + 2009-06-24 svu * libxklavier/xklavier_config.c, libxklavier/xklavier_config_iso.c: avoiding diff --git a/libxklavier/Makefile.am b/libxklavier/Makefile.am index f69a52e..1101f9a 100644 --- a/libxklavier/Makefile.am +++ b/libxklavier/Makefile.am @@ -15,17 +15,6 @@ else ENABLE_XMODMAP_SUPPORT_CFLAG = -DDISABLE_XMODMAP_SUPPORT=1 endif -EXTRA_DIST=marshal.list - -# GLIB_GENMARSHAL = $(shell $PKG_CONFIG --variable=glib_genmarshal glib-2.0) -GLIB_GENMARSHAL = `$PKG_CONFIG --variable=glib_genmarshal glib-2.0` - -xkl_engine_marshal.h: marshal.list - $(GLIB_GENMARSHAL) --prefix=xkl_engine marshal.list --header > xkl_engine_marshal.h - -xkl_engine_marshal.c: xkl_engine_marshal.h - $(GLIB_GENMARSHAL) --prefix=xkl_engine marshal.list --body > xkl_engine_marshal.c - AM_CFLAGS=-Wall -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" \ -I. -I$(top_srcdir) $(X_CFLAGS) \ $(XML_CFLAGS) $(GLIB_CFLAGS) $(XINPUT_CFLAGS) \ @@ -35,20 +24,60 @@ AM_CFLAGS=-Wall -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" \ lib_LTLIBRARIES = libxklavier.la noinst_HEADERS = xklavier_private.h xklavier_private_xkb.h xklavier_private_xmm.h +xklavier_headers = xklavier.h xkl_config_registry.h xkl_engine.h \ + xkl_config_rec.h xkl_config_item.h xkl_engine_marshal.h +xklavier_built_headers = xkl-enum-types.h +xklavier_built_cfiles = xkl-enum-types.c xklavierincdir = $(includedir)/libxklavier -xklavierinc_HEADERS = xklavier.h xkl_config_registry.h xkl_engine.h \ - xkl_config_rec.h xkl_config_item.h xkl_engine_marshal.h +xklavierinc_HEADERS = $(xklavier_headers) $(xklavier_built_headers) -libxklavier_la_SOURCES = xklavier.c xklavier_evt.c xklavier_config.c xklavier_config_iso.c \ +libxklavier_la_SOURCES = $(xklavier_built_cfiles) xklavier.c xklavier_evt.c xklavier_config.c xklavier_config_iso.c \ xklavier_xkb.c xklavier_evt_xkb.c xklavier_config_xkb.c xklavier_toplevel.c \ xklavier_xmm.c xklavier_xmm_opts.c xklavier_evt_xmm.c xklavier_config_xmm.c \ xklavier_util.c xklavier_props.c xklavier_dump.c xkl_engine_marshal.c \ - $(noinst_HEADERS) $(xklavierinc_HEADERS) + $(noinst_HEADERS) $(xklavierinc_HEADERS) libxklavier_la_LDFLAGS = -version-info @VERSION_INFO@ -no-undefined libxklavier_la_LIBADD = \ $(XML_LIBS) $(GLIB_LIBS) $(XINPUT_LIBS) \ $(LIBXKBFILE_PRESENT_LDFLAGS) \ $(X_LIBS) -lX11 $(LIBICONV) +EXTRA_DIST=marshal.list + +GLIB_GENMARSHAL = `$PKG_CONFIG --variable=glib_genmarshal glib-2.0` + +xkl_engine_marshal.h: marshal.list + $(GLIB_GENMARSHAL) --prefix=xkl_engine marshal.list --header > xkl_engine_marshal.h + +xkl_engine_marshal.c: xkl_engine_marshal.h + $(GLIB_GENMARSHAL) --prefix=xkl_engine marshal.list --body > xkl_engine_marshal.c + +xkl-enum-types.h: stamp-xkl-enum-types.h + @true +stamp-xkl-enum-types.h: $(xklavier_headers) + (cd $(srcdir) \ + && glib-mkenums \ + --fhead "#ifndef __XKL_ENUM_TYPES_H__\n#define __XKL_ENUM_TYPES_H__\n" \ + --fprod "/* enumerations from \"@filename@\" */\n" \ + --vhead "GType @enum_name@_get_type (void);\n#define XKL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ + --ftail "#endif /* __XKL_ENUM_TYPES_H__ */" \ + $(xklavier_headers)) > new-xkl-enum-types.h \ + && (cmp -s new-xkl-enum-types.h xkl-enum-types.h || cp new-xkl-enum-types.h xkl-enum-types.h) \ + && rm -f new-xkl-enum-types.h \ + && echo timestamp > $(@F) + +xkl-enum-types.c: $(xklavier_headers) xkl-enum-types.h + (cd $(srcdir) \ + && glib-mkenums \ + --fhead "#include " \ + --fprod "\n/* enumerations from \"@filename@\" */" \ + --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ + --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ + --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ + $(xklavier_headers)) > new-xkl-enum-types.c \ + && cp new-xkl-enum-types.c $(@F) \ + && rm -f new-xkl-enum-types.c + +DISTCLEANFILES=$(xklavier_built_headers) $(xklavier_built_cfiles) stamp-xkl-enum-types.h diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c index f7026f1..f7b251a 100644 --- a/libxklavier/xklavier.c +++ b/libxklavier/xklavier.c @@ -771,19 +771,6 @@ xkl_engine_finalize(GObject * obj) static void xkl_engine_class_init(XklEngineClass * klass) { - static GFlagsValue feature_flags[] = { - {XKLF_CAN_TOGGLE_INDICATORS, "XKLF_CAN_TOGGLE_INDICATORS", - NULL}, - {XKLF_CAN_OUTPUT_CONFIG_AS_ASCII, - "XKLF_CAN_OUTPUT_CONFIG_AS_ASCII", NULL}, - {XKLF_CAN_OUTPUT_CONFIG_AS_BINARY, - "XKLF_CAN_OUTPUT_CONFIG_AS_BINARY", NULL}, - {XKLF_MULTIPLE_LAYOUTS_SUPPORTED, - "XKLF_MULTIPLE_LAYOUTS_SUPPORTED", NULL}, - {XKLF_REQUIRES_MANUAL_LAYOUT_MANAGEMENT, - "XKLF_REQUIRES_MANUAL_LAYOUT_MANAGEMENT", NULL}, - {0, NULL, NULL} - }; static GEnumValue state_change_values[] = { {GROUP_CHANGED, "GROUP_CHANGED", NULL}, {INDICATORS_CHANGED, "INDICATORS_CHANGED", NULL}, @@ -799,7 +786,6 @@ xkl_engine_class_init(XklEngineClass * klass) GParamSpec *default_group_param_spec; GParamSpec *secondary_groups_mask_param_spec; GParamSpec *indicators_handling_param_spec; - GType features_type; GType state_change_type; const gchar *sdl; @@ -824,9 +810,6 @@ xkl_engine_class_init(XklEngineClass * klass) NULL, G_PARAM_READABLE); - features_type = g_flags_register_static("XklEngineFeatures", - feature_flags); - state_change_type = g_enum_register_static("XklEngineStateChangeType", state_change_values); @@ -834,7 +817,7 @@ xkl_engine_class_init(XklEngineClass * klass) features_param_spec = g_param_spec_flags("features", "Features", "Backend features", - features_type, + XKL_TYPE_ENGINE_FEATURES, 0, G_PARAM_READABLE); max_num_groups_param_spec = g_param_spec_uint("max-num-groups", "maxNumGroups", diff --git a/libxklavier/xklavier.h b/libxklavier/xklavier.h index efa3162..ee3bc1e 100644 --- a/libxklavier/xklavier.h +++ b/libxklavier/xklavier.h @@ -30,6 +30,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { -- cgit v1.2.1