diff options
author | Ryan Lortie <desrt@desrt.ca> | 2013-01-11 14:15:41 -0500 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2013-01-11 14:15:41 -0500 |
commit | 554c431c95d4c6ad0de6871134b1952d08f11efd (patch) | |
tree | d5d0c81becafc0f21733fe57c617a07b0818020f /engine | |
parent | 95af265b47eaec1ca4095fab750e03cde74b5114 (diff) | |
download | dconf-554c431c95d4c6ad0de6871134b1952d08f11efd.tar.gz |
engine: only Init the service when needed
Instead of calling Init() blindly on startup for any service-db, only do
it if the file is missing when we go to open it.
Diffstat (limited to 'engine')
-rw-r--r-- | engine/dconf-engine-source-service.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/engine/dconf-engine-source-service.c b/engine/dconf-engine-source-service.c index a65be7b..5024fc0 100644 --- a/engine/dconf-engine-source-service.c +++ b/engine/dconf-engine-source-service.c @@ -24,6 +24,7 @@ #include "dconf-engine.h" #include <sys/mman.h> +#include <unistd.h> #include <fcntl.h> #include <errno.h> @@ -34,9 +35,6 @@ dconf_engine_source_service_init (DConfEngineSource *source) source->bus_name = g_strdup ("ca.desrt.dconf"); source->object_path = g_strdup_printf ("/ca/desrt/dconf/%s", source->name); source->writable = TRUE; - - dconf_engine_dbus_call_sync_func (source->bus_type, source->bus_name, source->object_path, - "ca.desrt.dconf.Writer", "Init", NULL, NULL, NULL); } static gboolean @@ -54,6 +52,12 @@ dconf_engine_source_service_reopen (DConfEngineSource *source) gchar *filename; filename = g_build_filename (g_get_user_runtime_dir (), "dconf-service", source->name, NULL); + + /* If the file does not exist, kick the service to have it created. */ + if (access (filename, R_OK) != 0) + dconf_engine_dbus_call_sync_func (source->bus_type, source->bus_name, source->object_path, + "ca.desrt.dconf.Writer", "Init", NULL, NULL, NULL); + table = gvdb_table_new (filename, FALSE, &error); if (table == NULL) |