mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-24 11:12:11 +01:00
GSettingsBackend: add 'delay' vfunc
This vfunc gets a delayed settings backend appropriate for use with this type of GSettingsBackend.
This commit is contained in:
parent
fecac16dcf
commit
c16ab82d7b
@ -270,7 +270,7 @@ g_delayed_settings_backend_init (GDelayedSettingsBackend *delayed)
|
|||||||
g_mutex_init (&delayed->priv->lock);
|
g_mutex_init (&delayed->priv->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
GDelayedSettingsBackend *
|
GSettingsBackend *
|
||||||
g_delayed_settings_backend_new (GSettingsBackend *backend)
|
g_delayed_settings_backend_new (GSettingsBackend *backend)
|
||||||
{
|
{
|
||||||
GDelayedSettingsBackend *delayed;
|
GDelayedSettingsBackend *delayed;
|
||||||
@ -280,5 +280,5 @@ g_delayed_settings_backend_new (GSettingsBackend *backend)
|
|||||||
|
|
||||||
g_signal_connect_object (delayed->priv->backend, "event", G_CALLBACK (g_delayed_settings_got_event), delayed, 0);
|
g_signal_connect_object (delayed->priv->backend, "event", G_CALLBACK (g_delayed_settings_got_event), delayed, 0);
|
||||||
|
|
||||||
return delayed;
|
return G_SETTINGS_BACKEND (delayed);
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,6 @@ struct _GDelayedSettingsBackend
|
|||||||
G_GNUC_INTERNAL
|
G_GNUC_INTERNAL
|
||||||
GType g_delayed_settings_backend_get_type (void);
|
GType g_delayed_settings_backend_get_type (void);
|
||||||
G_GNUC_INTERNAL
|
G_GNUC_INTERNAL
|
||||||
GDelayedSettingsBackend * g_delayed_settings_backend_new (GSettingsBackend *backend);
|
GSettingsBackend * g_delayed_settings_backend_new (GSettingsBackend *backend);
|
||||||
|
|
||||||
#endif /* __G_DELAYED_SETTINGS_BACKEND_H__ */
|
#endif /* __G_DELAYED_SETTINGS_BACKEND_H__ */
|
||||||
|
@ -1132,7 +1132,7 @@ g_file_descriptor_based_get_type
|
|||||||
g_file_descriptor_based_get_fd
|
g_file_descriptor_based_get_fd
|
||||||
#endif
|
#endif
|
||||||
g_settings_backend_get_type
|
g_settings_backend_get_type
|
||||||
g_settings_backend_report_event
|
g_settings_backend_event
|
||||||
g_settings_backend_set_has_unapplied
|
g_settings_backend_set_has_unapplied
|
||||||
g_settings_backend_changed
|
g_settings_backend_changed
|
||||||
g_settings_backend_flatten_tree
|
g_settings_backend_flatten_tree
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "gsettings.h"
|
#include "gsettings.h"
|
||||||
|
|
||||||
#include "gdelayedsettingsbackend.h"
|
|
||||||
#include "gsettingsbackendinternal.h"
|
#include "gsettingsbackendinternal.h"
|
||||||
#include "gsettings-mapping.h"
|
#include "gsettings-mapping.h"
|
||||||
#include "gsettingsschema-internal.h"
|
#include "gsettingsschema-internal.h"
|
||||||
@ -1962,19 +1961,18 @@ g_settings_set_strv (GSettings *settings,
|
|||||||
void
|
void
|
||||||
g_settings_delay (GSettings *settings)
|
g_settings_delay (GSettings *settings)
|
||||||
{
|
{
|
||||||
GDelayedSettingsBackend *delayed;
|
GSettingsBackend *delayed;
|
||||||
|
|
||||||
g_return_if_fail (G_IS_SETTINGS (settings));
|
g_return_if_fail (G_IS_SETTINGS (settings));
|
||||||
|
|
||||||
if (settings->priv->delayed_apply)
|
if (settings->priv->delayed_apply)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
delayed = g_delayed_settings_backend_new (settings->priv->backend);
|
delayed = g_settings_backend_delay (settings->priv->backend);
|
||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (settings->priv->backend, g_settings_got_event, settings);
|
g_signal_handlers_disconnect_by_func (settings->priv->backend, g_settings_got_event, settings);
|
||||||
g_object_unref (settings->priv->backend);
|
g_object_unref (settings->priv->backend);
|
||||||
|
|
||||||
settings->priv->backend = G_SETTINGS_BACKEND (delayed);
|
settings->priv->backend = delayed;
|
||||||
g_signal_connect_object (delayed, "event", G_CALLBACK (g_settings_got_event), settings, 0);
|
g_signal_connect_object (delayed, "event", G_CALLBACK (g_settings_got_event), settings, 0);
|
||||||
g_signal_connect_object (delayed, "notify::has-unapplied",
|
g_signal_connect_object (delayed, "notify::has-unapplied",
|
||||||
G_CALLBACK (g_settings_got_has_unapplied_notify), settings, 0);
|
G_CALLBACK (g_settings_got_has_unapplied_notify), settings, 0);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "gsettingsbackendinternal.h"
|
#include "gsettingsbackendinternal.h"
|
||||||
|
#include "gdelayedsettingsbackend.h"
|
||||||
#include "gsimplepermission.h"
|
#include "gsimplepermission.h"
|
||||||
#include "giomodule-priv.h"
|
#include "giomodule-priv.h"
|
||||||
|
|
||||||
@ -708,6 +709,12 @@ ignore_subscription (GSettingsBackend *backend,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GSettingsBackend *
|
||||||
|
g_settings_backend_real_delay (GSettingsBackend *backend)
|
||||||
|
{
|
||||||
|
return g_delayed_settings_backend_new (backend);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ignore_apply (GSettingsBackend *backend)
|
ignore_apply (GSettingsBackend *backend)
|
||||||
{
|
{
|
||||||
@ -728,6 +735,7 @@ g_settings_backend_class_init (GSettingsBackendClass *class)
|
|||||||
|
|
||||||
class->subscribe = ignore_subscription;
|
class->subscribe = ignore_subscription;
|
||||||
class->unsubscribe = ignore_subscription;
|
class->unsubscribe = ignore_subscription;
|
||||||
|
class->delay = g_settings_backend_real_delay;
|
||||||
class->apply = ignore_apply;
|
class->apply = ignore_apply;
|
||||||
class->revert = ignore_apply;
|
class->revert = ignore_apply;
|
||||||
|
|
||||||
@ -854,6 +862,13 @@ g_settings_backend_sync_default (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSettingsBackend *
|
||||||
|
g_settings_backend_delay (GSettingsBackend *backend)
|
||||||
|
{
|
||||||
|
return G_SETTINGS_BACKEND_GET_CLASS (backend)
|
||||||
|
->delay (backend);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
g_settings_backend_get_has_unapplied (GSettingsBackend *backend)
|
g_settings_backend_get_has_unapplied (GSettingsBackend *backend)
|
||||||
{
|
{
|
||||||
|
@ -65,38 +65,39 @@ struct _GSettingsBackendClass
|
|||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
|
|
||||||
GVariant * (*read) (GSettingsBackend *backend,
|
GVariant * (* read) (GSettingsBackend *backend,
|
||||||
const gchar *key,
|
const gchar *key,
|
||||||
const GVariantType *expected_type,
|
const GVariantType *expected_type,
|
||||||
gboolean default_value);
|
gboolean default_value);
|
||||||
|
|
||||||
gboolean (*get_writable) (GSettingsBackend *backend,
|
gboolean (* get_writable) (GSettingsBackend *backend,
|
||||||
const gchar *key);
|
const gchar *key);
|
||||||
|
|
||||||
gboolean (*write) (GSettingsBackend *backend,
|
gboolean (* write) (GSettingsBackend *backend,
|
||||||
const gchar *key,
|
const gchar *key,
|
||||||
GVariant *value,
|
GVariant *value,
|
||||||
gpointer origin_tag);
|
gpointer origin_tag);
|
||||||
gboolean (*write_tree) (GSettingsBackend *backend,
|
gboolean (* write_tree) (GSettingsBackend *backend,
|
||||||
GTree *tree,
|
GTree *tree,
|
||||||
gpointer origin_tag);
|
gpointer origin_tag);
|
||||||
void (*reset) (GSettingsBackend *backend,
|
void (* reset) (GSettingsBackend *backend,
|
||||||
const gchar *key,
|
const gchar *key,
|
||||||
gpointer origin_tag);
|
gpointer origin_tag);
|
||||||
|
|
||||||
void (*subscribe) (GSettingsBackend *backend,
|
void (* subscribe) (GSettingsBackend *backend,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
void (*unsubscribe) (GSettingsBackend *backend,
|
void (* unsubscribe) (GSettingsBackend *backend,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
void (*sync) (GSettingsBackend *backend);
|
void (* sync) (GSettingsBackend *backend);
|
||||||
|
|
||||||
GPermission * (*get_permission) (GSettingsBackend *backend,
|
GPermission * (* get_permission) (GSettingsBackend *backend,
|
||||||
const gchar *path);
|
const gchar *path);
|
||||||
|
|
||||||
void (*apply) (GSettingsBackend *backend);
|
GSettingsBackend * (* delay) (GSettingsBackend *backend);
|
||||||
void (*revert) (GSettingsBackend *backend);
|
void (* apply) (GSettingsBackend *backend);
|
||||||
|
void (* revert) (GSettingsBackend *backend);
|
||||||
|
|
||||||
gpointer padding[22];
|
gpointer padding[21];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GSettingsBackend
|
struct _GSettingsBackend
|
||||||
|
@ -71,6 +71,8 @@ G_GNUC_INTERNAL
|
|||||||
GPermission * g_settings_backend_get_permission (GSettingsBackend *backend,
|
GPermission * g_settings_backend_get_permission (GSettingsBackend *backend,
|
||||||
const gchar *path);
|
const gchar *path);
|
||||||
G_GNUC_INTERNAL
|
G_GNUC_INTERNAL
|
||||||
|
GSettingsBackend * g_settings_backend_delay (GSettingsBackend *backend);
|
||||||
|
G_GNUC_INTERNAL
|
||||||
gboolean g_settings_backend_get_has_unapplied (GSettingsBackend *backend);
|
gboolean g_settings_backend_get_has_unapplied (GSettingsBackend *backend);
|
||||||
G_GNUC_INTERNAL
|
G_GNUC_INTERNAL
|
||||||
void g_settings_backend_apply (GSettingsBackend *backend);
|
void g_settings_backend_apply (GSettingsBackend *backend);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user