summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2009-06-23 21:32:59 +0000
committerSergey Udaltsov <svu@gnome.org>2009-06-23 21:32:59 +0000
commitc6638d30e9bc3fd1e32642d009c66dfd9b88c336 (patch)
tree7ca5de6aaafbbd231934714065bc5cc68b0721d8
parent60fd1b30b4bc378ebea525a7689c3fb007741492 (diff)
downloadlibxklavier-c6638d30e9bc3fd1e32642d009c66dfd9b88c336.tar.gz
Load exotic config registry materials optionally
-rw-r--r--ChangeLog10
-rw-r--r--configure.in5
-rw-r--r--libxklavier/xkl_config_registry.h6
-rw-r--r--libxklavier/xklavier_config.c30
-rw-r--r--libxklavier/xklavier_config_xkb.c9
-rw-r--r--libxklavier/xklavier_config_xmm.c6
-rw-r--r--libxklavier/xklavier_private.h7
-rw-r--r--libxklavier/xklavier_private_xkb.h3
-rw-r--r--libxklavier/xklavier_private_xmm.h3
-rw-r--r--tests/test_config.c2
10 files changed, 57 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index b4a5d90..31f282f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-06-23 svu
+
+ * configure.in, libxklavier/xkl_config_registry.h,
+ libxklavier/xklavier_config.c, libxklavier/xklavier_config_xkb.c,
+ libxklavier/xklavier_config_xmm.c, libxklavier/xklavier_private.h,
+ libxklavier/xklavier_private_xkb.h,
+ libxklavier/xklavier_private_xmm.h, tests/test_config.c: use exotic
+ materials optionally. Breaking API/ABI (incrementing version_info)
+ * tests/test_monitor.c: eliminating unneeded code
+
2009-06-19 svu
* libxklavier/xklavier_config.c, libxklavier/xklavier_config_iso.c,
diff --git a/configure.in b/configure.in
index f44b712..9472121 100644
--- a/configure.in
+++ b/configure.in
@@ -1,6 +1,6 @@
AC_PREREQ(2.59)
-AC_INIT([libxklavier], [3.9])
+AC_INIT([libxklavier], [4.0])
AC_CONFIG_SRCDIR([libxklavier/xklavier.c])
AM_INIT_AUTOMAKE([1.10 dist-bzip2])
@@ -8,7 +8,8 @@ AM_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR(m4)
dnl for DLL
-VERSION_INFO=14:0:2
+dnl http://sources.redhat.com/autobook/autobook/autobook_91.html
+VERSION_INFO=15:0:0
AC_SUBST(VERSION_INFO)
AM_MAINTAINER_MODE
diff --git a/libxklavier/xkl_config_registry.h b/libxklavier/xkl_config_registry.h
index f461b9e..75356b9 100644
--- a/libxklavier/xkl_config_registry.h
+++ b/libxklavier/xkl_config_registry.h
@@ -87,6 +87,8 @@ extern "C" {
/**
* xkl_config_registry_load:
* @config: the config registry
+ * @if_extras_needed: whether exotic materials (layouts, options)
+ * should be loaded as well
*
* Loads XML configuration registry. The name is taken from X server
* (for XKB/libxkbfile, from the root window property)
@@ -94,7 +96,9 @@ extern "C" {
* Returns: TRUE on success
*/
extern gboolean xkl_config_registry_load(XklConfigRegistry *
- config);
+ config,
+ gboolean
+ if_extras_needed);
/**
* ConfigItemProcessFunc:
diff --git a/libxklavier/xklavier_config.c b/libxklavier/xklavier_config.c
index 5d95b79..5e16cc5 100644
--- a/libxklavier/xklavier_config.c
+++ b/libxklavier/xklavier_config.c
@@ -136,8 +136,8 @@ xkl_item_populate_optional_array(XklConfigItem * item, xmlNodePtr ptr,
(element_ptr, element_tag));
element_ptr = element_ptr->next, idx++) {
elements[idx] =
- g_strdup((const char *) element_ptr->children->
- content);
+ g_strdup((const char *) element_ptr->
+ children->content);
}
g_object_set_data_full(G_OBJECT(item),
@@ -240,8 +240,8 @@ xkl_read_config_item(XklConfigRegistry * config, xmlNodePtr iptr,
if (vendor_element != NULL && vendor_element->children != NULL) {
vendor =
- g_strdup((const char *) vendor_element->
- children->content);
+ g_strdup((const char *) vendor_element->children->
+ content);
g_object_set_data_full(G_OBJECT(item), XCI_PROP_VENDOR,
vendor, g_free);
}
@@ -300,8 +300,9 @@ xkl_config_registry_foreach_in_xpath(XklConfigRegistry * config,
continue;
xkl_config_registry_foreach_in_nodeset(config,
- xpath_obj->nodesetval,
- func, data);
+ xpath_obj->
+ nodesetval, func,
+ data);
xmlXPathFreeObject(xpath_obj);
}
}
@@ -336,8 +337,9 @@ xkl_config_registry_foreach_in_xpath_with_param(XklConfigRegistry
continue;
xkl_config_registry_foreach_in_nodeset(config,
- xpath_obj->nodesetval,
- func, data);
+ xpath_obj->
+ nodesetval, func,
+ data);
xmlXPathFreeObject(xpath_obj);
}
}
@@ -578,7 +580,8 @@ xkl_config_registry_load_from_file(XklConfigRegistry * config,
gboolean
xkl_config_registry_load_helper(XklConfigRegistry * config,
const char default_ruleset[],
- const char base_dir[])
+ const char base_dir[],
+ gboolean if_extras_needed)
{
struct stat stat_buf;
gchar file_name[MAXPATHLEN] = "";
@@ -599,6 +602,9 @@ xkl_config_registry_load_helper(XklConfigRegistry * config,
if (!xkl_config_registry_load_from_file(config, file_name, 0))
return FALSE;
+ if (!if_extras_needed)
+ return TRUE;
+
g_snprintf(file_name, sizeof file_name, "%s/%s.extras.xml",
base_dir, rf);
@@ -825,14 +831,16 @@ xkl_config_rec_activate(const XklConfigRec * data, XklEngine * engine)
}
gboolean
-xkl_config_registry_load(XklConfigRegistry * config)
+xkl_config_registry_load(XklConfigRegistry * config,
+ gboolean if_extras_needed)
{
XklEngine *engine;
xkl_config_registry_free(config);
engine = xkl_config_registry_get_engine(config);
xkl_engine_ensure_vtable_inited(engine);
- return xkl_engine_vcall(engine, load_config_registry) (config);
+ return xkl_engine_vcall(engine, load_config_registry) (config,
+ if_extras_needed);
}
gboolean
diff --git a/libxklavier/xklavier_config_xkb.c b/libxklavier/xklavier_config_xkb.c
index 0b3e9ed..0fd5b2d 100644
--- a/libxklavier/xklavier_config_xkb.c
+++ b/libxklavier/xklavier_config_xkb.c
@@ -95,11 +95,13 @@ xkl_xkb_init_config_registry(XklConfigRegistry * config)
}
gboolean
-xkl_xkb_load_config_registry(XklConfigRegistry * config)
+xkl_xkb_load_config_registry(XklConfigRegistry * config,
+ gboolean if_extras_needed)
{
return xkl_config_registry_load_helper(config,
XKB_DEFAULT_RULESET,
- XKB_BASE "/rules");
+ XKB_BASE "/rules",
+ if_extras_needed);
}
#ifdef LIBXKBFILE_PRESENT
@@ -301,7 +303,8 @@ xkl_config_get_keyboard(XklEngine * engine,
}
} else /* no activate, just load */
xkb =
- result.xkb;
+ result.
+ xkb;
} else { /* could not load properly */
xkl_debug(0,
diff --git a/libxklavier/xklavier_config_xmm.c b/libxklavier/xklavier_config_xmm.c
index a629082..7d623eb 100644
--- a/libxklavier/xklavier_config_xmm.c
+++ b/libxklavier/xklavier_config_xmm.c
@@ -44,11 +44,13 @@ xkl_xmm_init_config_registry(XklConfigRegistry * config)
}
gboolean
-xkl_xmm_load_config_registry(XklConfigRegistry * config)
+xkl_xmm_load_config_registry(XklConfigRegistry * config,
+ gboolean if_extras_needed)
{
return xkl_config_registry_load_helper(config,
XMODMAP_DEFAULT_RULESET,
- XMODMAP_BASE);
+ XMODMAP_BASE,
+ if_extras_needed);
}
gboolean
diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h
index 5bcd24b..ddf5b38 100644
--- a/libxklavier/xklavier_private.h
+++ b/libxklavier/xklavier_private.h
@@ -99,7 +99,8 @@ struct _XklEnginePrivate {
* xkb: loads xml from XKB_BASE+"/rules/"+ruleset+".xml"
* xmodmap: loads xml from XMODMAP_BASE+"/"+ruleset+".xml"
*/
- gboolean(*load_config_registry) (XklConfigRegistry * config);
+ gboolean(*load_config_registry) (XklConfigRegistry * config,
+ gboolean if_extras_needed);
/*
* Write the configuration into the file (binary/textual)
@@ -399,7 +400,8 @@ extern gchar *xkl_locale_from_utf8(XklConfigRegistry * config,
extern gboolean xkl_config_registry_load_helper(XklConfigRegistry * config, const char
default_ruleset[],
- const char base_dir[]);
+ const char base_dir[],
+ gboolean if_extras_needed);
#define XKLAVIER_STATE_PROP_LENGTH 2
@@ -435,6 +437,7 @@ extern gboolean xkl_config_registry_load_helper(XklConfigRegistry * config, cons
extern void
+
xkl_config_registry_foreach_in_xpath_with_param(XklConfigRegistry * config,
const gchar * format,
const gchar * value,
diff --git a/libxklavier/xklavier_private_xkb.h b/libxklavier/xklavier_private_xkb.h
index 920aeeb..3332012 100644
--- a/libxklavier/xklavier_private_xkb.h
+++ b/libxklavier/xklavier_private_xkb.h
@@ -78,7 +78,8 @@ extern gboolean xkl_xkb_activate_config_rec(XklEngine * engine,
extern void xkl_xkb_init_config_registry(XklConfigRegistry * config);
-extern gboolean xkl_xkb_load_config_registry(XklConfigRegistry * config);
+extern gboolean xkl_xkb_load_config_registry(XklConfigRegistry * config,
+ gboolean if_extras_needed);
extern gboolean xkl_xkb_write_config_rec_to_file(XklEngine * engine,
const char *file_name,
diff --git a/libxklavier/xklavier_private_xmm.h b/libxklavier/xklavier_private_xmm.h
index 5df6edd..456e99f 100644
--- a/libxklavier/xklavier_private_xmm.h
+++ b/libxklavier/xklavier_private_xmm.h
@@ -77,7 +77,8 @@ extern gboolean xkl_xmm_activate_config_rec(XklEngine * engine,
extern void xkl_xmm_init_config_registry(XklConfigRegistry * config);
-extern gboolean xkl_xmm_load_config_registry(XklConfigRegistry * config);
+extern gboolean xkl_xmm_load_config_registry(XklConfigRegistry * config,
+ gboolean if_extras_needed);
extern gint xkl_xmm_process_x_event(XklEngine * engine, XEvent * kev);
diff --git a/tests/test_config.c b/tests/test_config.c
index c6a6e38..8072dda 100644
--- a/tests/test_config.c
+++ b/tests/test_config.c
@@ -248,7 +248,7 @@ main(int argc, char *const argv[])
xkl_debug(0, "Xklavier initialized\n");
config = xkl_config_registry_get_instance(engine);
- xkl_config_registry_load(config);
+ xkl_config_registry_load(config, TRUE);
xkl_debug(0, "Xklavier registry loaded\n");
xkl_debug(0, "Backend: [%s]\n",