summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2009-06-28 13:29:44 +0000
committerSergey Udaltsov <svu@gnome.org>2009-06-28 13:29:44 +0000
commit8a1e28e4e9887c799c6b34b8c0339cacc33d41cc (patch)
treece3982e0a58dc19fc58210ca5ad9b204d04120c4
parent55f7051979120d338912af9439c26799ee808653 (diff)
downloadlibxklavier-8a1e28e4e9887c799c6b34b8c0339cacc33d41cc.tar.gz
using binding-friendly glib-mkenums, b.fd.o#21578
-rw-r--r--ChangeLog9
-rw-r--r--libxklavier/Makefile.am59
-rw-r--r--libxklavier/xklavier.c19
-rw-r--r--libxklavier/xklavier.h1
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 <sayamindu@laptop.org>
+
+ 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 <libxklavier/xklavier.h>" \
+ --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 <libxklavier/xkl_config_rec.h>
#include <libxklavier/xkl_config_item.h>
#include <libxklavier/xkl_config_registry.h>
+#include <libxklavier/xkl-enum-types.h>
#ifdef __cplusplus
extern "C" {