diff options
author | Peng Huang <shawn.p.huang@gmail.com> | 2013-03-25 07:28:41 -0700 |
---|---|---|
committer | Peng Huang <shawn.p.huang@gmail.com> | 2013-03-25 07:28:41 -0700 |
commit | a37c3fabe546242a985421f941d0b1cff505ae2a (patch) | |
tree | e2039ae94208ffe375e2dcc8cffe3c53b366d3fb | |
parent | 61f15bd7b0568fec66b3fe1edf456f8e878ba728 (diff) | |
parent | 7e6517c95ebe6c58b58f68925163e96f133ad6bf (diff) | |
download | ibus-1.4.y.tar.gz |
Merge pull request #7 from microcai/1.4.y1.4.y
back port 1.5.y "Support dconf 0.13.4" to 1.4.y, please provide new ibus-1.4.3 tarball :)
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | dconf/Makefile.am | 2 | ||||
-rw-r--r-- | dconf/config-private.h (renamed from dconf/config.h) | 11 | ||||
-rw-r--r-- | dconf/config.c | 26 | ||||
-rw-r--r-- | dconf/main.c | 2 |
5 files changed, 40 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index f3f76f42..9ce539d1 100644 --- a/configure.ac +++ b/configure.ac @@ -299,6 +299,9 @@ if test x"$enable_dconf" = x"yes"; then [dconf >= 0.7.5], , enable_dconf=no ) + PKG_CHECK_EXISTS([dconf >= 0.13.4], + [AC_DEFINE(DCONF_0_13_4, TRUE, [dconf is 0.13.4 or later])], + []) # check glib-compile-schemas GLIB_GSETTINGS fi diff --git a/dconf/Makefile.am b/dconf/Makefile.am index 148ba621..f0e24b0a 100644 --- a/dconf/Makefile.am +++ b/dconf/Makefile.am @@ -29,7 +29,7 @@ libexec_PROGRAMS = \ ibus_dconf_SOURCES = \ main.c \ config.c \ - config.h \ + config-private.h \ $(NULL) ibus_dconf_CFLAGS = \ @GLIB2_CFLAGS@ \ diff --git a/dconf/config.h b/dconf/config-private.h index 9f602d6a..9ba4fd53 100644 --- a/dconf/config.h +++ b/dconf/config-private.h @@ -22,8 +22,17 @@ #ifndef __CONFIG_DCONF_H__ #define __CONFIG_DCONF_H__ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + #include <ibus.h> -#include <dconf/dconf.h> +#ifdef DCONF_0_13_4 +# include <client/dconf-client.h> +# include <common/dconf-paths.h> +#else +# include <dconf/dconf.h> +#endif #define IBUS_TYPE_CONFIG_DCONF \ (ibus_config_dconf_get_type ()) diff --git a/dconf/config.c b/dconf/config.c index 02506fba..18a8971f 100644 --- a/dconf/config.c +++ b/dconf/config.c @@ -23,7 +23,7 @@ #include <string.h> #include <ibus.h> -#include "config.h" +#include "config-private.h" #define DCONF_PREFIX "/desktop/ibus" #define DCONF_PRESERVE_NAME_PREFIXES_KEY \ @@ -159,12 +159,19 @@ static void _watch_func (DConfClient *client, const gchar *gpath, const gchar * const *items, +#ifndef DCONF_0_13_4 gint n_items, +#endif const gchar *tag, IBusConfigDConf *config) { gchar **gkeys = NULL; gint i; +#ifdef DCONF_0_13_4 + gint n_items; + + n_items = g_strv_length ((gchar **)items); +#endif g_return_if_fail (gpath != NULL); g_return_if_fail (n_items >= 0); @@ -231,6 +238,14 @@ static void ibus_config_dconf_init (IBusConfigDConf *config) { GVariant *variant; +#ifdef DCONF_0_13_4 + config->client = dconf_client_new (); + + g_signal_connect (config->client, "changed", + G_CALLBACK (_watch_func), config); + + dconf_client_watch_fast (config->client, DCONF_PREFIX"/"); +#else GError *error; config->client = dconf_client_new ("ibus", @@ -241,6 +256,7 @@ ibus_config_dconf_init (IBusConfigDConf *config) error = NULL; if (!dconf_client_watch (config->client, DCONF_PREFIX"/", NULL, &error)) g_warning ("Can not watch dconf path %s", DCONF_PREFIX"/"); +#endif config->preserve_name_prefixes = NULL; variant = dconf_client_read (config->client, @@ -265,9 +281,13 @@ static void ibus_config_dconf_destroy (IBusConfigDConf *config) { if (config->client) { +#ifdef DCONF_0_13_4 + dconf_client_unwatch_fast (config->client, DCONF_PREFIX"/"); +#else GError *error = NULL; if (!dconf_client_unwatch (config->client, DCONF_PREFIX"/", NULL, &error)) g_warning ("Can not unwatch dconf path %s", DCONF_PREFIX"/"); +#endif g_object_unref (config->client); config->client = NULL; @@ -307,12 +327,16 @@ ibus_config_dconf_set_value (IBusConfigService *config, g_free (gname); } +#ifdef DCONF_0_13_4 + retval = dconf_client_write_fast (client, gkey, value, error); +#else retval = dconf_client_write (client, gkey, value, NULL, /* tag */ NULL, /* cancellable */ error); +#endif g_free (gkey); /* notify the caller that the value has changed, as dconf does not diff --git a/dconf/main.c b/dconf/main.c index 1b69baa3..bffe9833 100644 --- a/dconf/main.c +++ b/dconf/main.c @@ -23,7 +23,7 @@ #include <ibus.h> #include <stdlib.h> #include <locale.h> -#include "config.h" +#include "config-private.h" static IBusBus *bus = NULL; static IBusConfigDConf *config = NULL; |