tracker r1831 - in branches/indexer-split: . src/tracker-indexer src/tracker-indexer/modules
- From: carlosg svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1831 - in branches/indexer-split: . src/tracker-indexer src/tracker-indexer/modules
- Date: Wed, 2 Jul 2008 16:04:15 +0000 (UTC)
Author: carlosg
Date: Wed Jul 2 16:04:15 2008
New Revision: 1831
URL: http://svn.gnome.org/viewvc/tracker?rev=1831&view=rev
Log:
2008-07-02 Carlos Garnacho <carlos imendio com>
* src/tracker-indexer/tracker-module.h: Add tracker_module_init() and
tracker_module_shutdown() to modules API. This is needed since we now
don't have an entry point that will be called just once, as happened
with tracker_module_get_directories().
* src/tracker-indexer/tracker-indexer-module.[ch]: Updated.
* src/tracker-indexer/tracker-indexer.c (close_module)
(tracker_indexer_init): Ensure the initialization/shutdown methods are
called for the modules.
* src/tracker-indexer/modules/evolution.c: Use these functions to
manage persistent data.
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/tracker-indexer/modules/evolution.c
branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c
branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h
branches/indexer-split/src/tracker-indexer/tracker-indexer.c
branches/indexer-split/src/tracker-indexer/tracker-module.h
Modified: branches/indexer-split/src/tracker-indexer/modules/evolution.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/modules/evolution.c (original)
+++ branches/indexer-split/src/tracker-indexer/modules/evolution.c Wed Jul 2 16:04:15 2008
@@ -88,6 +88,10 @@
static gchar *imap_dir = NULL;
static GHashTable *accounts = NULL;
+
+void get_imap_accounts (void);
+
+
static gboolean
read_summary (FILE *summary,
...)
@@ -190,6 +194,26 @@
return TRUE;
}
+void
+tracker_module_init (void)
+{
+ g_mime_init (0);
+ get_imap_accounts ();
+
+ local_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", G_DIR_SEPARATOR_S, NULL);
+ imap_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", G_DIR_SEPARATOR_S, NULL);
+}
+
+void
+tracker_module_shutdown (void)
+{
+ g_mime_shutdown ();
+
+ g_hash_table_destroy (accounts);
+ g_free (local_dir);
+ g_free (imap_dir);
+}
+
G_CONST_RETURN gchar *
tracker_module_get_name (void)
{
@@ -332,12 +356,6 @@
{
gchar **dirs;
- g_mime_init (0);
- get_imap_accounts ();
-
- local_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", G_DIR_SEPARATOR_S, NULL);
- imap_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", G_DIR_SEPARATOR_S, NULL);
-
dirs = g_new0 (gchar *, 3);
dirs[0] = g_strdup (local_dir);
dirs[1] = g_strdup (imap_dir);
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c Wed Jul 2 16:04:15 2008
@@ -48,6 +48,26 @@
return module;
}
+void
+tracker_indexer_module_init (GModule *module)
+{
+ TrackerModuleInit func;
+
+ if (g_module_symbol (module, "tracker_module_init", (gpointer *) &func)) {
+ (func) ();
+ }
+}
+
+void
+tracker_indexer_module_shutdown (GModule *module)
+{
+ TrackerModuleShutdown func;
+
+ if (g_module_symbol (module, "tracker_module_shutdown", (gpointer *) &func)) {
+ (func) ();
+ }
+}
+
G_CONST_RETURN gchar *
tracker_indexer_module_get_name (GModule *module)
{
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h Wed Jul 2 16:04:15 2008
@@ -29,6 +29,9 @@
GModule * tracker_indexer_module_load (const gchar *module_name);
+void tracker_indexer_module_init (GModule *module);
+void tracker_indexer_module_shutdown (GModule *module);
+
G_CONST_RETURN gchar * tracker_indexer_module_get_name (GModule *module);
gchar ** tracker_indexer_module_get_directories (GModule *module);
gchar ** tracker_indexer_module_get_ignore_directories (GModule *module);
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c Wed Jul 2 16:04:15 2008
@@ -355,6 +355,13 @@
}
static void
+close_module (GModule *module)
+{
+ tracker_indexer_module_shutdown (module);
+ g_module_close (module);
+}
+
+static void
tracker_indexer_init (TrackerIndexer *indexer)
{
TrackerIndexerPrivate *priv;
@@ -380,7 +387,7 @@
priv->indexer_modules = g_hash_table_new_full (g_str_hash,
g_str_equal,
NULL,
- (GDestroyNotify) g_module_close);
+ (GDestroyNotify) close_module);
for (m = priv->module_names; m; m = m->next) {
GModule *module;
@@ -392,6 +399,8 @@
module = tracker_indexer_module_load (m->data);
if (module) {
+ tracker_indexer_module_init (module);
+
g_hash_table_insert (priv->indexer_modules,
m->data, module);
}
@@ -627,7 +636,6 @@
TrackerIndexerPrivate *priv;
GModule *module;
GList *dirs, *d;
- gint i;
priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
module = g_hash_table_lookup (priv->indexer_modules, module_name);
Modified: branches/indexer-split/src/tracker-indexer/tracker-module.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-module.h (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-module.h Wed Jul 2 16:04:15 2008
@@ -31,6 +31,8 @@
gpointer data;
};
+typedef void (* TrackerModuleInit) (void);
+typedef void (* TrackerModuleShutdown) (void);
typedef const gchar * (* TrackerModuleGetNameFunc) (void);
typedef gchar ** (* TrackerModuleGetDirectoriesFunc) (void);
@@ -43,6 +45,9 @@
typedef gboolean (* TrackerModuleFileIterContents) (TrackerFile *path);
+void tracker_module_init (void);
+void tracker_module_shutdown (void);
+
G_CONST_RETURN gchar * tracker_module_get_name (void);
gchar ** tracker_module_get_directories (void);
gchar ** tracker_module_get_ignore_directories (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]