diff options
author | fujiwarat <takao.fujiwara1@gmail.com> | 2012-07-19 09:57:01 +0900 |
---|---|---|
committer | fujiwarat <takao.fujiwara1@gmail.com> | 2012-07-19 09:57:01 +0900 |
commit | a454448111650c3e92fc9ba65c26a57adc9c3c6c (patch) | |
tree | 3082f1ee0de17e6547e904d3bb603c04ed1e08b0 | |
parent | f453bf83f502d8b1e2b6f07cf669c14cbcfe008e (diff) | |
download | ibus-a454448111650c3e92fc9ba65c26a57adc9c3c6c.tar.gz |
Support dconf 0.13.4
TEST=Manually
Review URL: https://codereview.appspot.com/6426044
-rw-r--r-- | conf/dconf/Makefile.am | 2 | ||||
-rw-r--r-- | conf/dconf/config-private.h (renamed from conf/dconf/config.h) | 11 | ||||
-rw-r--r-- | conf/dconf/config.c | 26 | ||||
-rw-r--r-- | conf/dconf/main.c | 2 | ||||
-rw-r--r-- | configure.ac | 3 |
5 files changed, 40 insertions, 4 deletions
diff --git a/conf/dconf/Makefile.am b/conf/dconf/Makefile.am index 148ba621..f0e24b0a 100644 --- a/conf/dconf/Makefile.am +++ b/conf/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/conf/dconf/config.h b/conf/dconf/config-private.h index 9f602d6a..9ba4fd53 100644 --- a/conf/dconf/config.h +++ b/conf/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/conf/dconf/config.c b/conf/dconf/config.c index faca9328..44d70318 100644 --- a/conf/dconf/config.c +++ b/conf/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); return retval; diff --git a/conf/dconf/main.c b/conf/dconf/main.c index 1b69baa3..bffe9833 100644 --- a/conf/dconf/main.c +++ b/conf/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; diff --git a/configure.ac b/configure.ac index 8498efe2..cc7d0e0c 100644 --- a/configure.ac +++ b/configure.ac @@ -327,6 +327,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 |