mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-02 15:33:39 +02:00
Some more property work
svn path=/trunk/; revision=6008
This commit is contained in:
@@ -51,7 +51,7 @@ struct _GFileMonitorPrivate {
|
||||
int rate_limit_msec;
|
||||
|
||||
/* Rate limiting change events */
|
||||
guint32 last_sent_change_time; /* Some monitonic clock in msecs */
|
||||
guint32 last_sent_change_time; /* Some monotonic clock in msecs */
|
||||
GFile *last_sent_change_file;
|
||||
|
||||
guint send_delayed_change_timeout;
|
||||
@@ -61,11 +61,68 @@ struct _GFileMonitorPrivate {
|
||||
GFile *virtual_changes_done_file;
|
||||
};
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_RATE_LIMIT,
|
||||
PROP_CANCELLED
|
||||
};
|
||||
|
||||
static void
|
||||
g_file_monitor_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GFileMonitor *monitor;
|
||||
|
||||
monitor = G_FILE_MONITOR (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_RATE_LIMIT:
|
||||
g_file_monitor_set_rate_limit (monitor, g_value_get_int (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
g_file_monitor_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GFileMonitor *monitor;
|
||||
GFileMonitorPrivate *priv;
|
||||
|
||||
monitor = G_FILE_MONITOR (object);
|
||||
priv = monitor->priv;
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_RATE_LIMIT:
|
||||
g_value_set_int (value, priv->rate_limit_msec);
|
||||
break;
|
||||
|
||||
case PROP_CANCELLED:
|
||||
g_value_set_boolean (value, priv->cancelled);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#define DEFAULT_RATE_LIMIT_MSECS 800
|
||||
#define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2
|
||||
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
|
||||
static void
|
||||
g_file_monitor_finalize (GObject *object)
|
||||
{
|
||||
@@ -107,12 +164,15 @@ g_file_monitor_dispose (GObject *object)
|
||||
static void
|
||||
g_file_monitor_class_init (GFileMonitorClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
GObjectClass *object_class;
|
||||
|
||||
g_type_class_add_private (klass, sizeof (GFileMonitorPrivate));
|
||||
|
||||
gobject_class->finalize = g_file_monitor_finalize;
|
||||
gobject_class->dispose = g_file_monitor_dispose;
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
object_class->finalize = g_file_monitor_finalize;
|
||||
object_class->dispose = g_file_monitor_dispose;
|
||||
object_class->get_property = g_file_monitor_get_property;
|
||||
object_class->set_property = g_file_monitor_set_property;
|
||||
|
||||
/**
|
||||
* GFileMonitor::changed:
|
||||
@@ -130,10 +190,27 @@ g_file_monitor_class_init (GFileMonitorClass *klass)
|
||||
G_STRUCT_OFFSET (GFileMonitorClass, changed),
|
||||
NULL, NULL,
|
||||
_gio_marshal_VOID__OBJECT_OBJECT_INT,
|
||||
G_TYPE_NONE,3,
|
||||
G_TYPE_FILE,
|
||||
G_TYPE_FILE,
|
||||
G_TYPE_INT);
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_FILE, G_TYPE_FILE, G_TYPE_INT);
|
||||
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_RATE_LIMIT,
|
||||
g_param_spec_int ("rate-limit",
|
||||
P_("Rate limit"),
|
||||
P_("The limit of the monitor to watch for changes, in milliseconds"),
|
||||
0, G_MAXINT,
|
||||
DEFAULT_RATE_LIMIT_MSECS,
|
||||
G_PARAM_READWRITE|
|
||||
G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
|
||||
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_CANCELLED,
|
||||
g_param_spec_boolean ("cancelled",
|
||||
P_("Cancelled"),
|
||||
P_("Whether the monitor has been cancelled"),
|
||||
FALSE,
|
||||
G_PARAM_READABLE|
|
||||
G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -180,7 +257,8 @@ g_file_monitor_cancel (GFileMonitor* monitor)
|
||||
return TRUE;
|
||||
|
||||
monitor->priv->cancelled = TRUE;
|
||||
|
||||
g_object_notify (G_OBJECT (monitor), "cancelled");
|
||||
|
||||
klass = G_FILE_MONITOR_GET_CLASS (monitor);
|
||||
return (* klass->cancel) (monitor);
|
||||
}
|
||||
@@ -199,9 +277,14 @@ void
|
||||
g_file_monitor_set_rate_limit (GFileMonitor *monitor,
|
||||
int limit_msecs)
|
||||
{
|
||||
GFileMonitorPrivate *priv;
|
||||
g_return_if_fail (G_IS_FILE_MONITOR (monitor));
|
||||
|
||||
monitor->priv->rate_limit_msec = limit_msecs;
|
||||
priv = monitor->priv;
|
||||
if (priv->rate_limit_msec != limit_msecs)
|
||||
{
|
||||
monitor->priv->rate_limit_msec = limit_msecs;
|
||||
g_object_notify (G_OBJECT (monitor), "rate-limit");
|
||||
}
|
||||
}
|
||||
|
||||
static guint32
|
||||
|
Reference in New Issue
Block a user