gnome-utils r8218 - trunk/logview
- From: cosimoc svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-utils r8218 - trunk/logview
- Date: Tue, 23 Dec 2008 13:25:01 +0000 (UTC)
Author: cosimoc
Date: Tue Dec 23 13:25:01 2008
New Revision: 8218
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8218&view=rev
Log:
Add a file monitor.
Modified:
trunk/logview/logview-log.c
Modified: trunk/logview/logview-log.c
==============================================================================
--- trunk/logview/logview-log.c (original)
+++ trunk/logview/logview-log.c Tue Dec 23 13:25:01 2008
@@ -37,7 +37,9 @@
static guint signals [LAST_SIGNAL] = { 0 };
struct _LogviewLogPrivate {
+ /* file and monitor */
GFile *file;
+ GFileMonitor *mon;
/* stats about the file */
GTimeVal file_time;
@@ -97,6 +99,43 @@
self->priv = GET_PRIVATE (self);
}
+static void
+monitor_changed_cb (GFileMonitor *monitor,
+ GFile *file,
+ GFile *unused,
+ GFileMonitorEvent event,
+ gpointer user_data)
+{
+ LogviewLog *log = user_data;
+
+ if (event == G_FILE_MONITOR_EVENT_CHANGED) {
+ g_signal_emit (log, signals[LOG_CHANGED], 0, NULL);
+ }
+ /* TODO: handle the case where the log is deleted? */
+}
+
+static void
+setup_file_monitor (LogviewLog *log)
+{
+ GError *err = NULL;
+
+ log->priv->mon = g_file_monitor (log->priv->file,
+ 0, NULL, &err);
+ if (err) {
+ /* it'd be strange to get this error at this point but whatever */
+ g_warning ("Impossible to monitor the log file: the changes won't be notified");
+ g_error_free (err);
+ return;
+ }
+
+ /* set the rate to 1sec, as I guess it's not unusual to have more than
+ * one line written consequently or in a short time, being a log file.
+ */
+ g_file_monitor_set_rate_limit (log->priv->mon, 1000);
+ g_signal_connect (log->priv->mon, "changed",
+ G_CALLBACK (monitor_changed_cb), log);
+}
+
static gboolean
new_lines_job_done (gpointer data)
{
@@ -165,6 +204,7 @@
job->callback (job->log, NULL, job->user_data);
}
+ setup_file_monitor (job->log);
g_slice_free (LoadJob, job);
return FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]