mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-06-11 07:10:09 +02:00
GFileMonitor: support specifying a context
Add a new "context" construct-only property to allow explicitly specifying the context in which events should be dispatched. https://bugzilla.gnome.org/show_bug.cgi?id=704887
This commit is contained in:
parent
700677de51
commit
5409d7827e
@ -89,7 +89,8 @@ struct _GFileMonitorPrivate {
|
|||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_RATE_LIMIT,
|
PROP_RATE_LIMIT,
|
||||||
PROP_CANCELLED
|
PROP_CANCELLED,
|
||||||
|
PROP_CONTEXT
|
||||||
};
|
};
|
||||||
|
|
||||||
/* work around a limitation of the aliasing foo */
|
/* work around a limitation of the aliasing foo */
|
||||||
@ -113,6 +114,12 @@ g_file_monitor_set_property (GObject *object,
|
|||||||
g_file_monitor_set_rate_limit (monitor, g_value_get_int (value));
|
g_file_monitor_set_rate_limit (monitor, g_value_get_int (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_CONTEXT:
|
||||||
|
monitor->priv->context = g_value_dup_boxed (value);
|
||||||
|
if (monitor->priv->context == NULL)
|
||||||
|
monitor->priv->context = g_main_context_ref_thread_default ();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -260,6 +267,14 @@ g_file_monitor_class_init (GFileMonitorClass *klass)
|
|||||||
FALSE,
|
FALSE,
|
||||||
G_PARAM_READABLE|
|
G_PARAM_READABLE|
|
||||||
G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
|
G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
|
||||||
|
|
||||||
|
g_object_class_install_property (object_class,
|
||||||
|
PROP_CONTEXT,
|
||||||
|
g_param_spec_boxed ("context",
|
||||||
|
P_("Context"),
|
||||||
|
P_("The main context to dispatch from"),
|
||||||
|
G_TYPE_MAIN_CONTEXT, G_PARAM_WRITABLE |
|
||||||
|
G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -269,7 +284,6 @@ g_file_monitor_init (GFileMonitor *monitor)
|
|||||||
monitor->priv->rate_limit_msec = DEFAULT_RATE_LIMIT_MSECS;
|
monitor->priv->rate_limit_msec = DEFAULT_RATE_LIMIT_MSECS;
|
||||||
monitor->priv->rate_limiter = g_hash_table_new_full (g_file_hash, (GEqualFunc)g_file_equal,
|
monitor->priv->rate_limiter = g_hash_table_new_full (g_file_hash, (GEqualFunc)g_file_equal,
|
||||||
NULL, (GDestroyNotify) rate_limiter_free);
|
NULL, (GDestroyNotify) rate_limiter_free);
|
||||||
monitor->priv->context = g_main_context_ref_thread_default ();
|
|
||||||
g_mutex_init (&monitor->priv->mutex);
|
g_mutex_init (&monitor->priv->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user