-G_DEFINE_TYPE (GDelayedSettingsBackend,
- g_delayed_settings_backend,
- G_TYPE_SETTINGS_BACKEND)
+G_DEFINE_TYPE_WITH_PRIVATE (GDelayedSettingsBackend,
+ g_delayed_settings_backend,
+ G_TYPE_SETTINGS_BACKEND)
+
+static gboolean
+invoke_notify_unapplied (gpointer data)
+{
+ g_object_notify (data, "has-unapplied");
+ g_object_unref (data);
+
+ return FALSE;
+}
+
+static void
+g_delayed_settings_backend_notify_unapplied (GDelayedSettingsBackend *delayed)
+{
+ GMainContext *target_context;
+ GObject *target;
+
+ g_mutex_lock (&delayed->priv->lock);
+ if (delayed->priv->owner)
+ {
+ target_context = delayed->priv->owner_context;
+ target = g_object_ref (delayed->priv->owner);
+ }
+ else
+ {
+ target_context = NULL;
+ target = NULL;
+ }
+ g_mutex_unlock (&delayed->priv->lock);
+
+ if (target != NULL)
+ g_main_context_invoke (target_context, invoke_notify_unapplied, target);
+}
+