Package: d-conf
Followup-For: Bug #690801

See attached; after basic testing it seems to work.

Known issues (from lintian):

- circular dependency between libdconf1 and dconf-service, perhaps I should
  have had libdconf1 Breaks: dconf-service (<< 0.14)?
- hardening-no-fortify-functions on the libraries
- -dbg packages are wrong

I'll try to do another version with these corrected at some point.
--- d-conf-0.12.1/debian/changelog	2012-06-21 09:14:32.000000000 +0100
+++ d-conf-0.14.0/debian/changelog	2012-10-17 19:38:02.000000000 +0100
@@ -1,3 +1,71 @@
+d-conf (0.14.0-0+g36+1) experimental; urgency=low
+
+  * Local build
+  * Take Ubuntu changes and new upstream version
+  * Adapt DCONF_DIR patch to catch an additional case
+  * Bump GLib dependency to 2.34 to make sure we're not tricked by the
+    pseudo-epoch
+  * Make the library depend on the new dconf-service since the D-Bus API
+    has changed (old libraries work with the new service, but new libraries
+    do not work with the old service)
+
+ -- Simon McVittie <[email protected]>  Wed, 17 Oct 2012 19:15:25 +0100
+
+d-conf (0.14.0-0ubuntu2) quantal; urgency=low
+
+  * debian/patches/git_read_default_value.patch:
+    - upstream patch to fix reading of default schemas value
+
+ -- Sebastien Bacher <[email protected]>  Tue, 02 Oct 2012 19:35:59 +0200
+
+d-conf (0.14.0-0ubuntu1) quantal; urgency=low
+
+  * New upstream stable release
+
+ -- Robert Ancell <[email protected]>  Thu, 27 Sep 2012 10:28:49 +1200
+
+d-conf (0.13.90-0ubuntu1) quantal; urgency=low
+
+  * New upstream release
+
+ -- Robert Ancell <[email protected]>  Wed, 22 Aug 2012 16:35:20 +1200
+
+d-conf (0.13.5-0ubuntu1) quantal; urgency=low
+
+  * New upstream version:
+    - add manpages (lp: #950154)
+  * debian/patches/git_engine_profile_parsing.patch,
+  * debian/patches/git_gdbus_race.patch: 
+    - dropped, the patches are in the new version
+  * debian/control.in, debian/dconf-tools.maintscript:
+    - clean bash completion file from etc, it's in usr in quantal
+
+ -- Sebastien Bacher <[email protected]>  Tue, 07 Aug 2012 23:35:27 +0200
+
+d-conf (0.13.4-0ubuntu2) quantal-proposed; urgency=low
+
+  * debian/patches/git_engine_profile_parsing.patch:
+    - backport profile parsing fixes from git
+  * debian/patches/git_gdbus_race.patch: 
+    - backport assertion fix from git
+
+ -- Sebastien Bacher <[email protected]>  Thu, 26 Jul 2012 12:06:20 +0200
+
+d-conf (0.13.4-0ubuntu1) quantal; urgency=low
+
+  * New upstream release
+  * debian/control:
+    - Bump build-depends on libglib2.0-dev, valac-0.18
+    - Rename packages for new soname
+  * debian/rules:
+    - Bash completion rules fixed upstream
+  * debian/dconf-tools.install:
+    - Update to new bash completion location
+  * debian/libdconf1.symbols:
+    - Updated
+
+ -- Robert Ancell <[email protected]>  Thu, 19 Jul 2012 10:28:15 +1200
+
 d-conf (0.12.1-2) unstable; urgency=low
 
   * 01_env_path.patch: support the DCONF_PATH environment variable. This 
--- d-conf-0.12.1/debian/control	2012-06-21 09:19:58.000000000 +0100
+++ d-conf-0.14.0/debian/control	2012-10-18 10:56:58.000000000 +0100
@@ -7,14 +7,14 @@
 Section: libs
 Priority: optional
 Maintainer: Debian GNOME Maintainers <[email protected]>
-Uploaders: Josselin Mouette <[email protected]>, Laurent Bigonville <[email protected]>, Martin Pitt <[email protected]>, Michael Biebl <[email protected]>, Sjoerd Simons <[email protected]>
+Uploaders: Josselin Mouette <[email protected]>, Michael Biebl <[email protected]>, Sebastien Bacher <[email protected]>
 Build-Depends: debhelper (>= 8.1.3),
                cdbs (>= 0.4.93),
                autotools-dev,
                gnome-pkg-tools,
                gtk-doc-tools (>= 1.15),
-               valac-0.16 (>= 0.15.1),
-               libglib2.0-dev (>= 2.31.18),
+               valac-0.18 (>= 0.17.0),
+               libglib2.0-dev (>= 2.34),
                libdbus-1-dev,
                libgtk-3-dev (>= 3.0.0),
                libxml2-dev
@@ -23,11 +23,12 @@
 Vcs-Svn: svn://anonscm.debian.org/svn/pkg-gnome/desktop/unstable/d-conf
 Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/desktop/unstable/d-conf/
 
-Package: libdconf0
+Package: libdconf1
 Architecture: any
 Multi-Arch: same
 Depends: ${shlibs:Depends},
-         ${misc:Depends}
+         ${misc:Depends},
+         dconf-service (>= 0.14)
 Pre-Depends: ${misc:Pre-Depends}
 Breaks: dconf-gsettings-backend (<< 0.10.0)
 Description: simple configuration storage system - runtime library
@@ -40,8 +41,8 @@
 Section: libdevel
 Architecture: any
 Depends: ${misc:Depends},
-         libdconf0 (= ${binary:Version}),
-         libglib2.0-dev (>= 2.25.7)
+         libdconf1 (= ${binary:Version}),
+         libglib2.0-dev (>= 2.34)
 Recommends: libdconf-doc
 Description: simple configuration storage system - development files
  DConf is a low-level key/value database designed for storing desktop
@@ -55,7 +56,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: ${misc:Depends},
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Description: simple configuration storage system - debugging symbols
  DConf is a low-level key/value database designed for storing desktop
  environment settings.
@@ -67,7 +68,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Pre-Depends: ${misc:Pre-Depends}
 Description: simple configuration storage system - D-Bus library
  DConf is a low-level key/value database designed for storing desktop
@@ -116,6 +117,7 @@
 Architecture: any
 Depends: ${shlibs:Depends},
          ${misc:Depends}
+Pre-Depends: ${misc:Pre-Depends}
 Conflicts: dconf
 Description: simple configuration storage system - utilities
  DConf is a low-level key/value database designed for storing desktop
@@ -131,7 +133,7 @@
          ${misc:Depends},
          dconf-service (>= ${source:Version}),
          dconf-service (<< ${source:Version}.1~),
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Replaces: libdconf0 (<< 0.7.3-2)
 Breaks: libglib2.0-0 (<< 2.30),
         libdconf0 (<< 0.7.3-2)
@@ -149,7 +151,7 @@
 Multi-Arch: foreign
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Recommends: dconf-gsettings-backend
 Breaks: libdconf0 (<< 0.7.3-2),
         dconf-gsettings-backend (<< 0.10.0-2)
--- d-conf-0.12.1/debian/control.in	2012-05-04 22:20:11.000000000 +0100
+++ d-conf-0.14.0/debian/control.in	2012-10-17 19:38:02.000000000 +0100
@@ -8,8 +8,8 @@
                autotools-dev,
                gnome-pkg-tools,
                gtk-doc-tools (>= 1.15),
-               valac-0.16 (>= 0.15.1),
-               libglib2.0-dev (>= 2.31.18),
+               valac-0.18 (>= 0.17.0),
+               libglib2.0-dev (>= 2.34),
                libdbus-1-dev,
                libgtk-3-dev (>= 3.0.0),
                libxml2-dev
@@ -18,11 +18,12 @@
 Vcs-Svn: svn://anonscm.debian.org/svn/pkg-gnome/desktop/unstable/d-conf
 Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/desktop/unstable/d-conf/
 
-Package: libdconf0
+Package: libdconf1
 Architecture: any
 Multi-Arch: same
 Depends: ${shlibs:Depends},
-         ${misc:Depends}
+         ${misc:Depends},
+         dconf-service (>= 0.14)
 Pre-Depends: ${misc:Pre-Depends}
 Breaks: dconf-gsettings-backend (<< 0.10.0)
 Description: simple configuration storage system - runtime library
@@ -35,8 +36,8 @@
 Section: libdevel
 Architecture: any
 Depends: ${misc:Depends},
-         libdconf0 (= ${binary:Version}),
-         libglib2.0-dev (>= 2.25.7)
+         libdconf1 (= ${binary:Version}),
+         libglib2.0-dev (>= 2.34)
 Recommends: libdconf-doc
 Description: simple configuration storage system - development files
  DConf is a low-level key/value database designed for storing desktop
@@ -50,7 +51,7 @@
 Architecture: any
 Multi-Arch: same
 Depends: ${misc:Depends},
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Description: simple configuration storage system - debugging symbols
  DConf is a low-level key/value database designed for storing desktop
  environment settings.
@@ -62,7 +63,7 @@
 Multi-Arch: same
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Pre-Depends: ${misc:Pre-Depends}
 Description: simple configuration storage system - D-Bus library
  DConf is a low-level key/value database designed for storing desktop
@@ -111,6 +112,7 @@
 Architecture: any
 Depends: ${shlibs:Depends},
          ${misc:Depends}
+Pre-Depends: ${misc:Pre-Depends}
 Conflicts: dconf
 Description: simple configuration storage system - utilities
  DConf is a low-level key/value database designed for storing desktop
@@ -126,7 +128,7 @@
          ${misc:Depends},
          dconf-service (>= ${source:Version}),
          dconf-service (<< ${source:Version}.1~),
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Replaces: libdconf0 (<< 0.7.3-2)
 Breaks: libglib2.0-0 (<< 2.30),
         libdconf0 (<< 0.7.3-2)
@@ -144,7 +146,7 @@
 Multi-Arch: foreign
 Depends: ${shlibs:Depends},
          ${misc:Depends},
-         libdconf0 (= ${binary:Version})
+         libdconf1 (= ${binary:Version})
 Recommends: dconf-gsettings-backend
 Breaks: libdconf0 (<< 0.7.3-2),
         dconf-gsettings-backend (<< 0.10.0-2)
--- d-conf-0.12.1/debian/dconf-tools.install	2012-05-04 22:20:11.000000000 +0100
+++ d-conf-0.14.0/debian/dconf-tools.install	2012-10-17 19:38:02.000000000 +0100
@@ -1,6 +1,6 @@
-etc/bash_completion.d
 usr/bin
 usr/share/dconf-editor
 usr/share/applications/dconf-editor.desktop
+usr/share/bash-completion
 usr/share/glib-2.0/schemas/*dconf-editor*
 usr/share/icons/
--- d-conf-0.12.1/debian/dconf-tools.maintscript	1970-01-01 01:00:00.000000000 +0100
+++ d-conf-0.14.0/debian/dconf-tools.maintscript	2012-10-17 19:38:02.000000000 +0100
@@ -0,0 +1 @@
+rm_conffile /etc/bash_completion.d/dconf-bash-completion.sh 0.13.5-0ubuntu1 dconf-tools
--- d-conf-0.12.1/debian/libdconf0.install	2011-12-26 22:36:43.000000000 +0000
+++ d-conf-0.14.0/debian/libdconf0.install	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-usr/lib/*/libdconf.so.*
--- d-conf-0.12.1/debian/libdconf0.symbols	2011-12-26 22:36:43.000000000 +0000
+++ d-conf-0.14.0/debian/libdconf0.symbols	1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-libdconf.so.0 libdconf0 #MINVER#
-* Build-Depends-Package: libdconf-dev
- dconf_client_construct@Base 0.5
- dconf_client_get_type@Base 0.4
- dconf_client_is_writable@Base 0.4
- dconf_client_list@Base 0.4
- dconf_client_new@Base 0.4
- dconf_client_read@Base 0.4
- dconf_client_read_default@Base 0.4
- dconf_client_read_no_default@Base 0.4
- dconf_client_unwatch@Base 0.5
- dconf_client_unwatch_async@Base 0.5
- dconf_client_unwatch_finish@Base 0.5
- dconf_client_watch@Base 0.5
- dconf_client_watch_async@Base 0.5
- dconf_client_watch_finish@Base 0.5
- dconf_client_write@Base 0.4
- dconf_client_write_async@Base 0.4
- dconf_client_write_finish@Base 0.4
- dconf_client_write_many@Base 0.4
- dconf_is_dir@Base 0.4
- dconf_is_key@Base 0.4
- dconf_is_path@Base 0.4
- dconf_is_rel@Base 0.4
- dconf_is_rel_dir@Base 0.4
- dconf_is_rel_key@Base 0.4
--- d-conf-0.12.1/debian/libdconf1.install	1970-01-01 01:00:00.000000000 +0100
+++ d-conf-0.14.0/debian/libdconf1.install	2012-10-17 19:38:02.000000000 +0100
@@ -0,0 +1 @@
+usr/lib/*/libdconf.so.*
--- d-conf-0.12.1/debian/libdconf1.symbols	1970-01-01 01:00:00.000000000 +0100
+++ d-conf-0.14.0/debian/libdconf1.symbols	2012-10-17 19:38:02.000000000 +0100
@@ -0,0 +1,33 @@
+libdconf.so.1 libdconf1 #MINVER#
+* Build-Depends-Package: libdconf-dev
+ dconf_changeset_all@Base 0.13.4
+ dconf_changeset_describe@Base 0.13.4
+ dconf_changeset_deserialise@Base 0.13.4
+ dconf_changeset_get@Base 0.13.4
+ dconf_changeset_is_similar_to@Base 0.13.4
+ dconf_changeset_new@Base 0.13.4
+ dconf_changeset_new_write@Base 0.13.4
+ dconf_changeset_ref@Base 0.13.4
+ dconf_changeset_serialise@Base 0.13.4
+ dconf_changeset_set@Base 0.13.4
+ dconf_changeset_unref@Base 0.13.4
+ dconf_client_change_fast@Base 0.13.4
+ dconf_client_change_sync@Base 0.13.4
+ dconf_client_get_type@Base 0.4
+ dconf_client_is_writable@Base 0.4
+ dconf_client_list@Base 0.4
+ dconf_client_new@Base 0.4
+ dconf_client_read@Base 0.4
+ dconf_client_sync@Base 0.13.4
+ dconf_client_unwatch_fast@Base 0.13.4
+ dconf_client_unwatch_sync@Base 0.13.4
+ dconf_client_watch_fast@Base 0.13.4
+ dconf_client_watch_sync@Base 0.13.4
+ dconf_client_write_fast@Base 0.13.4
+ dconf_client_write_sync@Base 0.13.4
+ dconf_is_dir@Base 0.4
+ dconf_is_key@Base 0.4
+ dconf_is_path@Base 0.4
+ dconf_is_rel_dir@Base 0.4
+ dconf_is_rel_key@Base 0.4
+ dconf_is_rel_path@Base 0.13.4
--- d-conf-0.12.1/debian/patches/01_env_path.patch	2012-06-21 09:14:32.000000000 +0100
+++ d-conf-0.14.0/debian/patches/01_env_path.patch	2012-10-17 19:38:02.000000000 +0100
@@ -1,13 +1,25 @@
-GNOME #670493
+From: Simon McVittie <[email protected]>
+Date: Wed, 17 Oct 2012 19:04:57 +0100
+Subject: [PATCH] Respect DCONF_DIR instead of just using /etc/dconf
 
-Index: dconf-0.12.1/bin/dconf-update.vala
-===================================================================
---- dconf-0.12.1.orig/bin/dconf-update.vala	2012-03-19 16:36:21.000000000 +0100
-+++ dconf-0.12.1/bin/dconf-update.vala	2012-06-09 17:55:44.499132517 +0200
+Based on patches from Josselin Mouette and Robert Ancell.
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=670493
+---
+ bin/dconf-update.vala               |   11 ++++++++++-
+ bin/dconf.vala                      |    6 ++++--
+ engine/dconf-engine-profile.c       |   24 +++++++++++++++---------
+ engine/dconf-engine-source-system.c |    5 ++++-
+ 4 files changed, 33 insertions(+), 13 deletions(-)
+
+diff --git a/bin/dconf-update.vala b/bin/dconf-update.vala
+index 9fcc4ec..22cf071 100644
+--- a/bin/dconf-update.vala
++++ b/bin/dconf-update.vala
 @@ -241,7 +241,16 @@ void update_all (string dirname) {
  }
  
- void dconf_update (string[] args) {
+ void dconf_update (string[] args) throws GLib.Error {
 -	update_all ("/etc/dconf/db");
 +	if (args[2] != null) {
 +		update_all (args[2]);
@@ -22,11 +34,11 @@
  }
  
  // vim:noet ts=4 sw=4
-Index: dconf-0.12.1/bin/dconf.vala
-===================================================================
---- dconf-0.12.1.orig/bin/dconf.vala	2012-04-10 14:36:04.000000000 +0200
-+++ dconf-0.12.1/bin/dconf.vala	2012-06-09 17:48:31.661016471 +0200
-@@ -56,7 +56,7 @@ void show_help (bool requested, string?
+diff --git a/bin/dconf.vala b/bin/dconf.vala
+index 646b275..f2167a0 100644
+--- a/bin/dconf.vala
++++ b/bin/dconf.vala
+@@ -56,7 +56,7 @@ void show_help (bool requested, string? command) {
  
  		case "update":
  			description = "Update the system dconf databases";
@@ -35,7 +47,7 @@
  			break;
  
  		case "watch":
-@@ -119,7 +119,9 @@ Use 'dconf help COMMAND' to get detailed
+@@ -119,7 +119,9 @@ Use 'dconf help COMMAND' to get detailed help.
  				str.append ("  KEY       A key path (starting, but not ending with '/')\n");
  			}
  
@@ -46,33 +58,64 @@
  				str.append ("  DIR       A directory path (starting and ending with '/')\n");
  			}
  
-Index: dconf-0.12.1/engine/dconf-engine.c
-===================================================================
---- dconf-0.12.1.orig/engine/dconf-engine.c	2012-04-12 17:24:29.000000000 +0200
-+++ dconf-0.12.1/engine/dconf-engine.c	2012-06-09 18:01:24.848796399 +0200
-@@ -181,7 +181,10 @@ dconf_engine_refresh_system (DConfEngine
+diff --git a/engine/dconf-engine-profile.c b/engine/dconf-engine-profile.c
+index 7415406..df70d56 100644
+--- a/engine/dconf-engine-profile.c
++++ b/engine/dconf-engine-profile.c
+@@ -186,22 +186,28 @@ dconf_engine_profile_open (const gchar *profile,
+   if (profile == NULL)
+     profile = g_getenv ("DCONF_PROFILE");
  
-   if (engine->gvdbs[i] == NULL)
+-  if (profile == NULL)
++  if (profile == NULL || profile[0] != '/')
      {
--      gchar *filename = g_build_filename ("/etc/dconf/db",
-+      const gchar *dconf_dir = g_getenv ("DCONF_DIR");
-+      if (dconf_dir == NULL)
-+        dconf_dir = "/etc/dconf";
-+      gchar *filename = g_build_filename (dconf_dir, "db",
-                                           engine->names[i], NULL);
-       engine->gvdbs[i] = gvdb_table_new (filename, TRUE, NULL);
-       if (engine->gvdbs[i] == NULL)
-@@ -247,7 +250,12 @@ dconf_engine_load_profile (const gchar
- 
-   /* DCONF_PROFILE starting with '/' gives an absolute path to a profile */
-   if (profile[0] != '/')
--    filename = g_build_filename ("/etc/dconf/profile", profile, NULL);
-+    {
+-      file = fopen ("/etc/dconf/profile/user", "r");
 +      const gchar *dconf_dir = g_getenv ("DCONF_DIR");
++      const gchar *use_profile = "user";
++      gchar *filename;
++
 +      if (dconf_dir == NULL)
 +        dconf_dir = "/etc/dconf";
-+      filename = g_build_filename (dconf_dir, "profile", profile, NULL);
-+    }
++
++      if (profile != NULL)
++        use_profile = profile;
++
++      filename = g_build_filename (dconf_dir, "profile", use_profile, NULL);
++      file = fopen (filename, "r");
++      g_free (filename);
+ 
+       /* Only in the case that no profile was specified do we use this
+        * fallback.
+        */
+-      if (file == NULL)
++      if (file == NULL && profile == NULL)
+         return dconf_engine_default_profile (n_sources);
+     }
+-  else if (profile[0] != '/')
+-    {
+-      gchar *filename = g_build_filename ("/etc/dconf/profile", profile, NULL);
+-      file = fopen (filename, "r");
+-      g_free (filename);
+-    }
    else
-     filename = g_strdup (profile);
+     file = fopen (profile, "r");
  
+diff --git a/engine/dconf-engine-source-system.c b/engine/dconf-engine-source-system.c
+index 727bad9..d126adc 100644
+--- a/engine/dconf-engine-source-system.c
++++ b/engine/dconf-engine-source-system.c
+@@ -48,7 +48,10 @@ dconf_engine_source_system_reopen (DConfEngineSource *source)
+   GvdbTable *table;
+   gchar *filename;
+ 
+-  filename = g_build_filename ("/etc/dconf/db", source->name, NULL);
++  const gchar *dconf_dir = g_getenv ("DCONF_DIR");
++  if (dconf_dir == NULL)
++    dconf_dir = "/etc/dconf";
++  filename = g_build_filename (dconf_dir, "db", source->name, NULL);
+   table = gvdb_table_new (filename, FALSE, &error);
+ 
+   if (table == NULL)
+-- 
+1.7.10.4
+
--- d-conf-0.12.1/debian/patches/git_read_default_value.patch	1970-01-01 01:00:00.000000000 +0100
+++ d-conf-0.14.0/debian/patches/git_read_default_value.patch	2012-10-17 19:38:02.000000000 +0100
@@ -0,0 +1,99 @@
+From ed9b7ba09f1bd82905b3b55c7d2f4c20e745f3b0 Mon Sep 17 00:00:00 2001
+From: Ryan Lortie <[email protected]>
+Date: Tue, 2 Oct 2012 13:29:01 -0400
+Subject: [PATCH] engine/: drop DConfChangesetList
+
+It's really just a GQueue...
+
+https://bugzilla.gnome.org/show_bug.cgi?id=685316
+
+From c610b180af144add1a7b556d1d2d8fe6378cd1b2 Mon Sep 17 00:00:00 2001
+From: Ryan Lortie <[email protected]>
+Date: Tue, 2 Oct 2012 13:29:16 -0400
+Subject: [PATCH] gsettings/: support correct read of default values
+
+The existing code had a /* XXX */ for properly dealing with the case of
+the user requesting the default value.  We should probably implement
+this...
+
+https://bugzilla.gnome.org/show_bug.cgi?id=685316
+---
+diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
+index 89a0c67..30c4881 100644
+--- a/engine/dconf-engine.c
++++ b/engine/dconf-engine.c
+@@ -376,9 +376,9 @@ dconf_engine_find_key_in_queue (GQueue       *queue,
+ }
+ 
+ GVariant *
+-dconf_engine_read (DConfEngine        *engine,
+-                   DConfChangesetList *read_through,
+-                   const gchar        *key)
++dconf_engine_read (DConfEngine *engine,
++                   GQueue      *read_through,
++                   const gchar *key)
+ {
+   GVariant *value = NULL;
+   gint lock_level = 0;
+@@ -500,7 +500,7 @@ dconf_engine_read (DConfEngine        *engine,
+ 
+       /* Step 2.  Check read_through. */
+       if (read_through)
+-        found_key = dconf_engine_find_key_in_queue (&read_through->queue, key, &value);
++        found_key = dconf_engine_find_key_in_queue (read_through, key, &value);
+ 
+       /* Step 3.  Check queued changes if we didn't find it in read_through.
+        *
+diff --git a/engine/dconf-engine.h b/engine/dconf-engine.h
+index 3c65e87..a52e971 100644
+--- a/engine/dconf-engine.h
++++ b/engine/dconf-engine.h
+@@ -22,7 +22,7 @@
+ #ifndef __dconf_engine_h__
+ #define __dconf_engine_h__
+ 
+-#include "dconf-changeset-list.h"
++#include "../common/dconf-changeset.h"
+ 
+ #include <gio/gio.h>
+ 
+@@ -121,7 +121,7 @@ gboolean                dconf_engine_is_writable                        (DConfEn
+ 
+ G_GNUC_INTERNAL
+ GVariant *              dconf_engine_read                               (DConfEngine             *engine,
+-                                                                         DConfChangesetList      *read_through,
++                                                                         GQueue                  *read_through,
+                                                                          const gchar             *key);
+ 
+ G_GNUC_INTERNAL
+diff --git a/gsettings/dconfsettingsbackend.c b/gsettings/dconfsettingsbackend.c
+index 1725d16..c8273f9 100644
+--- a/gsettings/dconfsettingsbackend.c
++++ b/gsettings/dconfsettingsbackend.c
+@@ -44,10 +44,23 @@ dconf_settings_backend_read (GSettingsBackend   *backend,
+                              gboolean            default_value)
+ {
+   DConfSettingsBackend *dcsb = (DConfSettingsBackend *) backend;
++  GVariant *value;
+ 
+-  /* XXX default value */
++  if (default_value)
++    {
++      GQueue *read_through;
++
++      /* Mark the key as having been reset when trying to do the read... */
++      read_through = g_queue_new ();
++      g_queue_push_tail (read_through, dconf_changeset_new_write (key, NULL));
++      value = dconf_engine_read (dcsb->engine, read_through, key);
++      g_queue_free_full (read_through, (GDestroyNotify) dconf_changeset_unref);
++    }
++
++  else
++    value = dconf_engine_read (dcsb->engine, NULL, key);
+ 
+-  return dconf_engine_read (dcsb->engine, NULL, key);
++  return value;
+ }
+ 
+ static gboolean
+
--- d-conf-0.12.1/debian/patches/series	2012-06-21 09:14:32.000000000 +0100
+++ d-conf-0.14.0/debian/patches/series	2012-10-17 19:38:02.000000000 +0100
@@ -1 +1,2 @@
 01_env_path.patch
+git_read_default_value.patch
--- d-conf-0.12.1/debian/rules	2011-12-26 22:36:43.000000000 +0000
+++ d-conf-0.14.0/debian/rules	2012-10-17 19:38:02.000000000 +0100
@@ -16,8 +16,3 @@
 
 DEB_DBG_PACKAGE_libdconf0 := libdconf-dbg
 DEB_DBG_PACKAGE_libdconf-dbus-1-0 := libdconf-dbus-1-dbg
-
-# Don't install bash completion file as executable shell script.
-# https://bugzilla.gnome.org/show_bug.cgi?id=651936
-binary-install/dconf-tools::
-	chmod -x debian/dconf-tools/etc/bash_completion.d/dconf-bash-completion.sh

Attachment: d-conf_0.14.0-0+g36+1.debian.tar.gz
Description: Binary data

Reply via email to