X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgnullsettingsbackend.c;h=9f8a34ce84fa9901b5919916d5fe37c577ddc915;hb=e608ec7b2e47d29fa189fca6e97f484f41c115a4;hp=e09ed9f8845ae04f49d02a83e95732641ad58ddf;hpb=45a1c41e8cfdeb4edeb7a671b95e599a49c6c281;p=platform%2Fupstream%2Fglib.git
diff --git a/gio/gnullsettingsbackend.c b/gio/gnullsettingsbackend.c
index e09ed9f..9f8a34c 100644
--- a/gio/gnullsettingsbackend.c
+++ b/gio/gnullsettingsbackend.c
@@ -12,16 +12,17 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see .
*
* Author: Ryan Lortie
*/
#include "config.h"
-#include "gnullsettingsbackend.h"
+#include "gsettingsbackendinternal.h"
+#include "giomodule.h"
+#include "gsimplepermission.h"
+
#define G_TYPE_NULL_SETTINGS_BACKEND (g_null_settings_backend_get_type ())
#define G_NULL_SETTINGS_BACKEND(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
@@ -32,14 +33,17 @@
typedef GSettingsBackendClass GNullSettingsBackendClass;
typedef GSettingsBackend GNullSettingsBackend;
-G_DEFINE_TYPE (GNullSettingsBackend,
- g_null_settings_backend,
- G_TYPE_SETTINGS_BACKEND)
+G_DEFINE_TYPE_WITH_CODE (GNullSettingsBackend,
+ g_null_settings_backend,
+ G_TYPE_SETTINGS_BACKEND,
+ g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME,
+ g_define_type_id, "null", 10))
static GVariant *
g_null_settings_backend_read (GSettingsBackend *backend,
const gchar *key,
- const GVariantType *expected_type)
+ const GVariantType *expected_type,
+ gboolean default_value)
{
return NULL;
}
@@ -50,14 +54,27 @@ g_null_settings_backend_write (GSettingsBackend *backend,
GVariant *value,
gpointer origin_tag)
{
+ if (value)
+ g_variant_unref (g_variant_ref_sink (value));
+ return FALSE;
+}
+
+static gboolean
+g_null_settings_backend_write_one (gpointer key,
+ gpointer value,
+ gpointer data)
+{
+ if (value)
+ g_variant_unref (g_variant_ref_sink (value));
return FALSE;
}
static gboolean
-g_null_settings_backend_write_keys (GSettingsBackend *backend,
+g_null_settings_backend_write_tree (GSettingsBackend *backend,
GTree *tree,
gpointer origin_tag)
{
+ g_tree_foreach (tree, g_null_settings_backend_write_one, backend);
return FALSE;
}
@@ -68,20 +85,20 @@ g_null_settings_backend_reset (GSettingsBackend *backend,
{
}
-static void
-g_null_settings_backend_reset_path (GSettingsBackend *backend,
- const gchar *path,
- gpointer origin_tag)
-{
-}
-
static gboolean
g_null_settings_backend_get_writable (GSettingsBackend *backend,
- const gchar *name)
+ const gchar *name)
{
return FALSE;
}
+static GPermission *
+g_null_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path)
+{
+ return g_simple_permission_new (FALSE);
+}
+
static void
g_null_settings_backend_init (GNullSettingsBackend *memory)
{
@@ -94,12 +111,25 @@ g_null_settings_backend_class_init (GNullSettingsBackendClass *class)
backend_class->read = g_null_settings_backend_read;
backend_class->write = g_null_settings_backend_write;
- backend_class->write_keys = g_null_settings_backend_write_keys;
+ backend_class->write_tree = g_null_settings_backend_write_tree;
backend_class->reset = g_null_settings_backend_reset;
- backend_class->reset_path = g_null_settings_backend_reset_path;
backend_class->get_writable = g_null_settings_backend_get_writable;
+ backend_class->get_permission = g_null_settings_backend_get_permission;
}
+/**
+ * g_null_settings_backend_new:
+ *
+ *
+ * Creates a readonly #GSettingsBackend.
+ *
+ * This backend does not allow changes to settings, so all settings
+ * will always have their default values.
+ *
+ * Returns: (transfer full): a newly created #GSettingsBackend
+ *
+ * Since: 2.28
+ */
GSettingsBackend *
g_null_settings_backend_new (void)
{