[tracker/wip/carlosg/sparql1.1: 21/56] libtracker-data: Use DBManager signal to setup DataManager-level iface stuff



commit 842e22e0a686b0ea2eaa946700c38917ddb5bb61
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Apr 22 13:14:16 2019 +0200

    libtracker-data: Use DBManager signal to setup DataManager-level iface stuff
    
    Instead of breaking the layering here. This will be useful to set up other
    things than FTS in the future.

 src/libtracker-data/tracker-data-manager.c | 15 ++++++++++++++-
 src/libtracker-data/tracker-data-manager.h |  3 ---
 src/libtracker-data/tracker-db-manager.c   | 20 +++++++++++++++++---
 3 files changed, 31 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 7be107609..31e910a35 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -3846,7 +3846,7 @@ rebuild_fts_tokens (TrackerDataManager *manager,
        tracker_db_manager_tokenizer_update (manager->db_manager);
 }
 
-gboolean
+static gboolean
 tracker_data_manager_init_fts (TrackerDBInterface *iface,
                                gboolean            create)
 {
@@ -3943,6 +3943,16 @@ update_ontology_last_modified (TrackerDataManager  *manager,
        }
 }
 
+static void
+setup_interface_cb (TrackerDBManager   *db_manager,
+                    TrackerDBInterface *iface,
+                    TrackerDataManager *data_manager)
+{
+#if HAVE_TRACKER_FTS
+       tracker_data_manager_init_fts (iface, FALSE);
+#endif
+}
+
 static gboolean
 tracker_data_manager_initable_init (GInitable     *initable,
                                     GCancellable  *cancellable,
@@ -3997,6 +4007,9 @@ tracker_data_manager_initable_init (GInitable     *initable,
                return FALSE;
        }
 
+       g_signal_connect (manager->db_manager, "setup-interface",
+                         G_CALLBACK (setup_interface_cb), manager);
+
        manager->first_time_index = is_first_time_index;
 
        tracker_data_manager_update_status (manager, "Initializing data manager");
diff --git a/src/libtracker-data/tracker-data-manager.h b/src/libtracker-data/tracker-data-manager.h
index e250fb0ea..ef7dec4b9 100644
--- a/src/libtracker-data/tracker-data-manager.h
+++ b/src/libtracker-data/tracker-data-manager.h
@@ -78,9 +78,6 @@ TrackerDBInterface * tracker_data_manager_get_db_interface    (TrackerDataManage
 TrackerDBInterface * tracker_data_manager_get_writable_db_interface (TrackerDataManager *manager);
 TrackerData *        tracker_data_manager_get_data            (TrackerDataManager *manager);
 
-gboolean tracker_data_manager_init_fts               (TrackerDBInterface     *interface,
-                                                     gboolean                create);
-
 GHashTable *         tracker_data_manager_get_namespaces      (TrackerDataManager *manager);
 
 gboolean             tracker_data_manager_create_graph (TrackerDataManager  *manager,
diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c
index 1226bfd26..1480972d4 100644
--- a/src/libtracker-data/tracker-db-manager.c
+++ b/src/libtracker-data/tracker-db-manager.c
@@ -148,6 +148,13 @@ struct _TrackerDBManager {
        GThread *wal_thread;
 };
 
+enum {
+       SETUP_INTERFACE,
+       N_SIGNALS
+};
+
+static guint signals[N_SIGNALS] = { 0 };
+
 G_DEFINE_TYPE (TrackerDBManager, tracker_db_manager, G_TYPE_OBJECT)
 
 static gboolean            db_exec_no_reply                        (TrackerDBInterface   *iface,
@@ -1065,9 +1072,7 @@ tracker_db_manager_get_db_interface (TrackerDBManager *db_manager)
                                                                    TRUE, &internal_error);
 
                if (interface) {
-#if HAVE_TRACKER_FTS
-                       tracker_data_manager_init_fts (interface, FALSE);
-#endif
+                       g_signal_emit (db_manager, signals[SETUP_INTERFACE], 0, interface);
                } else {
                        if (g_async_queue_length_unlocked (db_manager->interfaces) == 0) {
                                g_critical ("Error opening database: %s", internal_error->message);
@@ -1099,6 +1104,15 @@ tracker_db_manager_class_init (TrackerDBManagerClass *klass)
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
        object_class->finalize = tracker_db_manager_finalize;
+
+       signals[SETUP_INTERFACE] =
+               g_signal_new ("setup-interface",
+                             G_TYPE_FROM_CLASS (klass),
+                             G_SIGNAL_RUN_LAST, 0,
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__OBJECT,
+                             G_TYPE_NONE,
+                             1, TRACKER_TYPE_DB_INTERFACE);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]