GSettingsBackend: add vfuncs 'apply' and 'revert'

Remove this API from GDelayedSettingsBackend.
This commit is contained in:
Ryan Lortie 2011-12-29 15:16:50 -05:00
parent 6681e7bf9c
commit fecac16dcf
6 changed files with 53 additions and 32 deletions

View File

@ -165,9 +165,11 @@ g_delayed_settings_backend_get_permission (GSettingsBackend *backend,
/* method calls */
void
g_delayed_settings_backend_apply (GDelayedSettingsBackend *delayed)
static void
g_delayed_settings_backend_apply (GSettingsBackend *backend)
{
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
if (g_tree_nnodes (delayed->priv->delayed) > 0)
{
gboolean success;
@ -190,9 +192,11 @@ g_delayed_settings_backend_apply (GDelayedSettingsBackend *delayed)
}
}
void
g_delayed_settings_backend_revert (GDelayedSettingsBackend *delayed)
static void
g_delayed_settings_backend_revert (GSettingsBackend *backend)
{
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
if (g_tree_nnodes (delayed->priv->delayed) > 0)
{
GTree *tmp;
@ -249,6 +253,8 @@ g_delayed_settings_backend_class_init (GDelayedSettingsBackendClass *class)
backend_class->subscribe = g_delayed_settings_backend_subscribe;
backend_class->unsubscribe = g_delayed_settings_backend_unsubscribe;
backend_class->get_permission = g_delayed_settings_backend_get_permission;
backend_class->apply = g_delayed_settings_backend_apply;
backend_class->revert = g_delayed_settings_backend_revert;
object_class->finalize = g_delayed_settings_backend_finalize;
}

View File

@ -60,9 +60,5 @@ G_GNUC_INTERNAL
GType g_delayed_settings_backend_get_type (void);
G_GNUC_INTERNAL
GDelayedSettingsBackend * g_delayed_settings_backend_new (GSettingsBackend *backend);
G_GNUC_INTERNAL
void g_delayed_settings_backend_revert (GDelayedSettingsBackend *delayed);
G_GNUC_INTERNAL
void g_delayed_settings_backend_apply (GDelayedSettingsBackend *delayed);
#endif /* __G_DELAYED_SETTINGS_BACKEND_H__ */

View File

@ -240,7 +240,7 @@ struct _GSettingsPrivate
GSettingsSchema *schema;
gchar *path;
GDelayedSettingsBackend *delayed;
gboolean delayed_apply;
};
enum
@ -618,7 +618,7 @@ g_settings_get_property (GObject *object,
break;
case PROP_DELAY_APPLY:
g_value_set_boolean (value, settings->priv->delayed != NULL);
g_value_set_boolean (value, settings->priv->delayed_apply);
break;
default:
@ -1962,21 +1962,24 @@ g_settings_set_strv (GSettings *settings,
void
g_settings_delay (GSettings *settings)
{
GDelayedSettingsBackend *delayed;
g_return_if_fail (G_IS_SETTINGS (settings));
if (settings->priv->delayed)
if (settings->priv->delayed_apply)
return;
settings->priv->delayed = g_delayed_settings_backend_new (settings->priv->backend);
delayed = g_delayed_settings_backend_new (settings->priv->backend);
g_signal_handlers_disconnect_by_func (settings->priv->backend, g_settings_got_event, settings);
g_object_unref (settings->priv->backend);
settings->priv->backend = G_SETTINGS_BACKEND (settings->priv->delayed);
g_signal_connect_object (settings->priv->backend, "event", G_CALLBACK (g_settings_got_event), settings, 0);
g_signal_connect_object (settings->priv->delayed, "notify::has-unapplied",
settings->priv->backend = G_SETTINGS_BACKEND (delayed);
g_signal_connect_object (delayed, "event", G_CALLBACK (g_settings_got_event), settings, 0);
g_signal_connect_object (delayed, "notify::has-unapplied",
G_CALLBACK (g_settings_got_has_unapplied_notify), settings, 0);
g_object_notify (G_OBJECT (settings), "delay-apply");
settings->priv->delayed_apply = TRUE;
}
/**
@ -1991,13 +1994,7 @@ g_settings_delay (GSettings *settings)
void
g_settings_apply (GSettings *settings)
{
if (settings->priv->delayed)
{
GDelayedSettingsBackend *delayed;
delayed = G_DELAYED_SETTINGS_BACKEND (settings->priv->backend);
g_delayed_settings_backend_apply (delayed);
}
g_settings_backend_apply (settings->priv->backend);
}
/**
@ -2014,13 +2011,7 @@ g_settings_apply (GSettings *settings)
void
g_settings_revert (GSettings *settings)
{
if (settings->priv->delayed)
{
GDelayedSettingsBackend *delayed;
delayed = G_DELAYED_SETTINGS_BACKEND (settings->priv->backend);
g_delayed_settings_backend_revert (delayed);
}
g_settings_backend_revert (settings->priv->backend);
}
/**

View File

@ -708,6 +708,11 @@ ignore_subscription (GSettingsBackend *backend,
{
}
static void
ignore_apply (GSettingsBackend *backend)
{
}
static void
g_settings_backend_init (GSettingsBackend *backend)
{
@ -723,6 +728,8 @@ g_settings_backend_class_init (GSettingsBackendClass *class)
class->subscribe = ignore_subscription;
class->unsubscribe = ignore_subscription;
class->apply = ignore_apply;
class->revert = ignore_apply;
gobject_class->get_property = g_settings_backend_get_property;
@ -864,3 +871,17 @@ g_settings_backend_set_has_unapplied (GSettingsBackend *backend,
g_object_notify_by_pspec (G_OBJECT (backend), g_settings_backend_pspecs[PROP_HAS_UNAPPLIED]);
}
}
void
g_settings_backend_apply (GSettingsBackend *backend)
{
G_SETTINGS_BACKEND_GET_CLASS (backend)
->apply (backend);
}
void
g_settings_backend_revert (GSettingsBackend *backend)
{
G_SETTINGS_BACKEND_GET_CLASS (backend)
->revert (backend);
}

View File

@ -93,7 +93,10 @@ struct _GSettingsBackendClass
GPermission * (*get_permission) (GSettingsBackend *backend,
const gchar *path);
gpointer padding[24];
void (*apply) (GSettingsBackend *backend);
void (*revert) (GSettingsBackend *backend);
gpointer padding[22];
};
struct _GSettingsBackend

View File

@ -73,6 +73,10 @@ GPermission * g_settings_backend_get_permission (GSettin
G_GNUC_INTERNAL
gboolean g_settings_backend_get_has_unapplied (GSettingsBackend *backend);
G_GNUC_INTERNAL
void g_settings_backend_apply (GSettingsBackend *backend);
G_GNUC_INTERNAL
void g_settings_backend_revert (GSettingsBackend *backend);
G_GNUC_INTERNAL
void g_settings_backend_sync_default (void);
G_GNUC_INTERNAL