summaryrefslogtreecommitdiff
path: root/xfconf
diff options
context:
space:
mode:
authorAli Abdallah <aliovx@gmail.com>2016-04-21 12:00:59 +0200
committerAli Abdallah <aliovx@gmail.com>2016-04-21 12:00:59 +0200
commit6312fb9aabffefddfd4815c8fc3c98b2dbfbb398 (patch)
tree1ec5891646d91ad20bdcf895ef2bbcd66057ff9b /xfconf
parent546bdcde2584fec4f37a3d737721bfd6c49a9114 (diff)
downloadxfconf-6312fb9aabffefddfd4815c8fc3c98b2dbfbb398.tar.gz
Port xfconf_channel_get_properties to gdbus and
Get rid of the last dbus-glib code in libxfconf.
Diffstat (limited to 'xfconf')
-rw-r--r--xfconf/Makefile.am17
-rw-r--r--xfconf/xfconf-cache.c8
-rw-r--r--xfconf/xfconf-channel.c36
-rw-r--r--xfconf/xfconf-private.h4
-rw-r--r--xfconf/xfconf.c80
5 files changed, 36 insertions, 109 deletions
diff --git a/xfconf/Makefile.am b/xfconf/Makefile.am
index 9edb51e..4fb624e 100644
--- a/xfconf/Makefile.am
+++ b/xfconf/Makefile.am
@@ -29,11 +29,9 @@ libxfconf_0_la_SOURCES = \
libxfconf_0_la_CFLAGS = \
$(GLIB_CFLAGS) \
- $(DBUS_CFLAGS) \
$(GIO_CFLAGS) \
$(GIO_UNIX_CFLAGS) \
$(GTHREAD_CFLAGS) \
- $(DBUS_GLIB_CFLAGS) \
$(PLATFORM_CFLAGS)
libxfconf_0_la_LDFLAGS = \
@@ -49,9 +47,7 @@ libxfconf_0_la_LIBADD = \
$(GIO_LIBS) \
$(GIO_UNIX_LIBS) \
$(GLIB_LIBS) \
- $(GTHREAD_LIBS) \
- $(DBUS_LIBS) \
- $(DBUS_GLIB_LIBS)
+ $(GTHREAD_LIBS)
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libxfconf-0.pc
@@ -60,7 +56,6 @@ pkgconfig_DATA = libxfconf-0.pc
if MAINTAINER_MODE
BUILT_SOURCES = \
- xfconf-dbus-bindings.h \
xfconf-gdbus-bindings.c \
xfconf-gdbus-bindings.h
@@ -72,16 +67,8 @@ xfconf-gdbus-bindings.c: $(top_srcdir)/common/xfconf-dbus.xml Makefile
--generate-c-code xfconf-gdbus-bindings \
$<
-xfconf-dbus-bindings.h: $(top_srcdir)/common/xfconf-dbus.xml Makefile
- $(AM_V_GEN) dbus-binding-tool --mode=glib-client $< > $(@).tmp \
- && sed -e 's/^\([[:space:]]\+GValue[[:space:]]\+[^=]\+\).*;$$/\1 = { 0, };/' <$(@).tmp >$@ \
- && rm -f $(@).tmp
-# the above fixes a bug in dbus-binding-tool's output
-# dbus-binding-tool doesn't initialise GValues to { 0, } properly
-
CLEANFILES = \
- $(BUILT_SOURCES) \
- xfconf-dbus-bindings.h.tmp
+ $(BUILT_SOURCES)
endif
diff --git a/xfconf/xfconf-cache.c b/xfconf/xfconf-cache.c
index ec0c216..3022b34 100644
--- a/xfconf/xfconf-cache.c
+++ b/xfconf/xfconf-cache.c
@@ -1,6 +1,7 @@
/*
* xfconf
*
+ * Copyright (c) 2016 Ali Abdallah <ali@xfce.org>
* Copyright (c) 2009 Brian Tarricone <brian@tarricone.org>
*
* This library is free software; you can redistribute it and/or
@@ -30,7 +31,6 @@
#include "xfconf-channel.h"
#include "xfconf-errors.h"
#include "xfconf-gdbus-bindings.h"
-#include "xfconf-dbus-bindings.h"
#include "common/xfconf-gvaluefuncs.h"
#include "xfconf-private.h"
#include "common/xfconf-marshal.h"
@@ -954,7 +954,7 @@ xfconf_cache_reset(XfconfCache *cache,
GError **error)
{
gboolean ret = FALSE;
- DBusGProxy *proxy = _xfconf_get_dbus_g_proxy();
+ GDBusProxy *proxy = _xfconf_get_gdbus_proxy();
#if 0
XfconfCacheOldItem *old_item = NULL;
#endif
@@ -991,8 +991,8 @@ xfconf_cache_reset(XfconfCache *cache,
* this point if a reset is going to remove the property or reset
* it to a default. so, we have to do this sync. sad. */
- ret = xfconf_client_reset_property(proxy, cache->channel_name,
- property_base, recursive, error);
+ ret = xfconf_client_call_reset_property_sync ((XfconfClient*)proxy, cache->channel_name,
+ property_base, recursive, NULL, error);
if(ret) {
/* here we just evict the entry from the cache if we have one.
diff --git a/xfconf/xfconf-channel.c b/xfconf/xfconf-channel.c
index 6cda4f6..c861b75 100644
--- a/xfconf/xfconf-channel.c
+++ b/xfconf/xfconf-channel.c
@@ -1,6 +1,7 @@
/*
* xfconf
*
+ * Copyright (c) 2016 Ali Abdallah <ali@xfce.org>
* Copyright (c) 2007-2008 Brian Tarricone <bjt23@cornell.edu>
*
* This library is free software; you can redistribute it and/or
@@ -28,7 +29,6 @@
#include "xfconf-channel.h"
#include "xfconf-cache.h"
-#include "xfconf-dbus-bindings.h"
#include "xfconf-gdbus-bindings.h"
#include "common/xfconf-gvaluefuncs.h"
#include "xfconf-private.h"
@@ -746,8 +746,12 @@ GHashTable *
xfconf_channel_get_properties(XfconfChannel *channel,
const gchar *property_base)
{
- DBusGProxy *proxy = _xfconf_get_dbus_g_proxy();
+ GDBusProxy *proxy = _xfconf_get_gdbus_proxy ();
GHashTable *properties = NULL;
+ GVariant *out_props;
+ GVariant *variant;
+ gchar *key;
+ GVariantIter iter;
gchar *real_property_base;
ERROR_DEFINE;
@@ -756,15 +760,33 @@ xfconf_channel_get_properties(XfconfChannel *channel,
else
real_property_base = REAL_PROP(channel, property_base);
- if(!xfconf_client_get_all_properties(proxy, channel->channel_name,
- real_property_base
- ? real_property_base : "/",
- &properties, ERROR))
+ if(!xfconf_client_call_get_all_properties_sync ((XfconfClient*)proxy, channel->channel_name,
+ real_property_base
+ ? real_property_base : "/",
+ &out_props, NULL, ERROR))
{
ERROR_CHECK;
properties = NULL;
}
-
+
+ g_variant_iter_init (&iter, out_props);
+ properties = g_hash_table_new_full(g_str_hash, g_str_equal,
+ (GDestroyNotify)g_free,(GDestroyNotify)g_value_unset);
+
+ while (g_variant_iter_next (&iter, "{&sv}", &key, &variant)) {
+ GValue *value;
+
+ value = g_new0(GValue, 1);
+ g_dbus_gvariant_to_gvalue(variant, value);
+ g_hash_table_insert (properties,
+ g_strdup(key),
+ value);
+
+ g_variant_unref (variant);
+ g_free(key);
+ }
+ g_variant_unref (out_props);
+
if(real_property_base != property_base
&& real_property_base != channel->property_base)
{
diff --git a/xfconf/xfconf-private.h b/xfconf/xfconf-private.h
index b611dff..6dcaffa 100644
--- a/xfconf/xfconf-private.h
+++ b/xfconf/xfconf-private.h
@@ -21,7 +21,6 @@
#ifndef __XFCONF_PRIVATE_H__
#define __XFCONF_PRIVATE_H__
-#include <dbus/dbus-glib.h>
#include <gio/gio.h>
#ifdef XFCONF_ENABLE_CHECKS
@@ -50,9 +49,6 @@ typedef struct
GType *member_types;
} XfconfNamedStruct;
-DBusGConnection *_xfconf_get_dbus_g_connection(void);
-DBusGProxy *_xfconf_get_dbus_g_proxy(void);
-
GDBusConnection *_xfconf_get_gdbus_connection(void);
GDBusProxy *_xfconf_get_gdbus_proxy(void);
diff --git a/xfconf/xfconf.c b/xfconf/xfconf.c
index 99b4dd9..c125571 100644
--- a/xfconf/xfconf.c
+++ b/xfconf/xfconf.c
@@ -30,16 +30,12 @@
#include <gio/gio.h>
#include <glib-object.h>
-#include <dbus/dbus-glib.h>
-
#include "xfconf.h"
#include "common/xfconf-marshal.h"
#include "xfconf-private.h"
#include "common/xfconf-alias.h"
static guint xfconf_refcnt = 0;
-static DBusGConnection *dbus_conn = NULL;
-static DBusGProxy *dbus_proxy = NULL;
static GDBusConnection *gdbus = NULL;
static GDBusProxy *gproxy = NULL;
@@ -48,29 +44,6 @@ static GHashTable *named_structs = NULL;
/* private api */
-DBusGConnection *
-_xfconf_get_dbus_g_connection(void)
-{
- if(!xfconf_refcnt) {
- g_critical("xfconf_init() must be called before attempting to use libxfconf!");
- return NULL;
- }
-
- return dbus_conn;
-}
-
-DBusGProxy *
-_xfconf_get_dbus_g_proxy(void)
-{
- if(!xfconf_refcnt) {
- g_critical("xfconf_init() must be called before attempting to use libxfconf!");
- return NULL;
- }
-
- return dbus_proxy;
-}
-
-
GDBusConnection *
_xfconf_get_gdbus_connection(void)
{
@@ -107,34 +80,6 @@ _xfconf_named_struct_free(XfconfNamedStruct *ns)
g_slice_free(XfconfNamedStruct, ns);
}
-
-
-static void
-xfconf_static_dbus_init(void)
-{
- static gboolean static_dbus_inited = FALSE;
-
- if(!static_dbus_inited) {
- dbus_g_error_domain_register(XFCONF_ERROR, "org.xfce.Xfconf.Error",
- XFCONF_TYPE_ERROR);
-
- dbus_g_object_register_marshaller(_xfconf_marshal_VOID__STRING_STRING_BOXED,
- G_TYPE_NONE,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_VALUE,
- G_TYPE_INVALID);
- dbus_g_object_register_marshaller(_xfconf_marshal_VOID__STRING_STRING,
- G_TYPE_NONE,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_INVALID);
-
- static_dbus_inited = TRUE;
- }
-}
-
-
/* public api */
/**
@@ -159,13 +104,8 @@ xfconf_init(GError **error)
g_type_init();
#endif
- xfconf_static_dbus_init();
-
- dbus_conn = dbus_g_bus_get(DBUS_BUS_SESSION, error);
- if(!dbus_conn)
- return FALSE;
-
gdbus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, error);
+
if (!gdbus)
return FALSE;
@@ -177,18 +117,6 @@ xfconf_init(GError **error)
"org.xfce.Xfconf",
NULL,
NULL);
-
- dbus_proxy = dbus_g_proxy_new_for_name(dbus_conn,
- "org.xfce.Xfconf",
- "/org/xfce/Xfconf",
- "org.xfce.Xfconf");
-
- dbus_g_proxy_add_signal(dbus_proxy, "PropertyChanged",
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VALUE,
- G_TYPE_INVALID);
- dbus_g_proxy_add_signal(dbus_proxy, "PropertyRemoved",
- G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_INVALID);
++xfconf_refcnt;
return TRUE;
@@ -221,12 +149,6 @@ xfconf_shutdown(void)
named_structs = NULL;
}
- g_object_unref(G_OBJECT(dbus_proxy));
- dbus_proxy = NULL;
-
- dbus_g_connection_unref(dbus_conn);
- dbus_conn = NULL;
-
--xfconf_refcnt;
}