[tracker/libtracker-miner] Make sure we reload the settings when config file changes
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/libtracker-miner] Make sure we reload the settings when config file changes
- Date: Thu, 27 Aug 2009 16:50:12 +0000 (UTC)
commit 5ac5cfecc3358ff7abfb2c54117f997ae056f4b0
Author: Martyn Russell <martyn lanedo com>
Date: Thu Aug 27 17:23:28 2009 +0100
Make sure we reload the settings when config file changes
src/libtracker-common/tracker-config-file.c | 24 ++++++++++++++-
src/libtracker-common/tracker-config-file.h | 2 +
src/tracker-miner-fs/tracker-config.c | 41 +++++++++++++++++----------
3 files changed, 50 insertions(+), 17 deletions(-)
---
diff --git a/src/libtracker-common/tracker-config-file.c b/src/libtracker-common/tracker-config-file.c
index 0fe0f0c..6021e87 100644
--- a/src/libtracker-common/tracker-config-file.c
+++ b/src/libtracker-common/tracker-config-file.c
@@ -51,6 +51,13 @@ enum {
PROP_DOMAIN
};
+enum {
+ CHANGED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0, };
+
G_DEFINE_TYPE (TrackerConfigFile, tracker_config_file, G_TYPE_OBJECT);
static void
@@ -63,6 +70,18 @@ tracker_config_file_class_init (TrackerConfigFileClass *klass)
object_class->finalize = config_finalize;
object_class->constructed = config_constructed;
+ signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (TrackerConfigFileClass, changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0,
+ G_TYPE_NONE);
+
g_object_class_install_property (object_class,
PROP_DOMAIN,
g_param_spec_string ("domain",
@@ -194,14 +213,13 @@ config_changed_cb (GFileMonitor *monitor,
gpointer user_data)
{
TrackerConfigFile *file;
- gchar *filename;
+ gchar *filename;
file = TRACKER_CONFIG_FILE (user_data);
/* Do we recreate if the file is deleted? */
switch (event_type) {
- case G_FILE_MONITOR_EVENT_CHANGED:
case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
file->file_exists = TRUE;
@@ -211,6 +229,8 @@ config_changed_cb (GFileMonitor *monitor,
g_free (filename);
config_load (file);
+
+ g_signal_emit (file, signals[CHANGED], 0);
break;
case G_FILE_MONITOR_EVENT_DELETED:
diff --git a/src/libtracker-common/tracker-config-file.h b/src/libtracker-common/tracker-config-file.h
index b46fee1..d0d9e85 100644
--- a/src/libtracker-common/tracker-config-file.h
+++ b/src/libtracker-common/tracker-config-file.h
@@ -49,6 +49,8 @@ struct _TrackerConfigFile {
struct _TrackerConfigFileClass {
GObjectClass parent_class;
+
+ void (* changed) (TrackerConfigFile *file);
};
GType tracker_config_file_get_type (void) G_GNUC_CONST;
diff --git a/src/tracker-miner-fs/tracker-config.c b/src/tracker-miner-fs/tracker-config.c
index 376cab3..463b776 100644
--- a/src/tracker-miner-fs/tracker-config.c
+++ b/src/tracker-miner-fs/tracker-config.c
@@ -87,21 +87,22 @@ typedef struct {
gchar *key;
} ObjectToKeyFile;
-static void config_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
-static void config_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec);
-static void config_finalize (GObject *object);
-static void config_constructed (GObject *object);
-static void config_load (TrackerConfig *config);
-static gboolean config_save (TrackerConfig *config);
-static void config_create_with_defaults (TrackerConfig *config,
- GKeyFile *key_file,
- gboolean overwrite);
+static void config_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void config_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void config_finalize (GObject *object);
+static void config_constructed (GObject *object);
+static void config_changed (TrackerConfigFile *file);
+static void config_load (TrackerConfig *config);
+static gboolean config_save (TrackerConfig *config);
+static void config_create_with_defaults (TrackerConfig *config,
+ GKeyFile *key_file,
+ gboolean overwrite);
enum {
PROP_0,
@@ -159,12 +160,15 @@ static void
tracker_config_class_init (TrackerConfigClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ TrackerConfigFileClass *config_file_class = TRACKER_CONFIG_FILE_CLASS (klass);
object_class->set_property = config_set_property;
object_class->get_property = config_get_property;
object_class->finalize = config_finalize;
object_class->constructed = config_constructed;
+ config_file_class->changed = config_changed;
+
/* General */
g_object_class_install_property (object_class,
PROP_VERBOSITY,
@@ -513,6 +517,13 @@ config_constructed (GObject *object)
}
static void
+config_changed (TrackerConfigFile *file)
+{
+ /* Reload config */
+ config_load (TRACKER_CONFIG (file));
+}
+
+static void
config_create_with_defaults (TrackerConfig *config,
GKeyFile *key_file,
gboolean overwrite)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]