X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgnullsettingsbackend.c;h=9f8a34ce84fa9901b5919916d5fe37c577ddc915;hb=c3842d1969feace4bfb12919be730e75e53877d9;hp=961b881b1e3f3b669bd50d5057c089560ac8ca49;hpb=5b946e0504952a472cea1ef95df0967e8a4a7b47;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gnullsettingsbackend.c b/gio/gnullsettingsbackend.c index 961b881..9f8a34c 100644 --- a/gio/gnullsettingsbackend.c +++ b/gio/gnullsettingsbackend.c @@ -12,16 +12,15 @@ * 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" @@ -34,10 +33,11 @@ typedef GSettingsBackendClass GNullSettingsBackendClass; typedef GSettingsBackend GNullSettingsBackend; -static GType g_null_settings_backend_get_type (void); -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, @@ -54,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_keys (GSettingsBackend *backend, +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_tree (GSettingsBackend *backend, GTree *tree, gpointer origin_tag) { + g_tree_foreach (tree, g_null_settings_backend_write_one, backend); return FALSE; } @@ -72,13 +85,6 @@ 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) @@ -105,13 +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) {