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) {