[tracker/wip/carlosg/sparql1.1: 2/80] libtracker-data: Turn TrackerDBManager into a GObject
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/sparql1.1: 2/80] libtracker-data: Turn TrackerDBManager into a GObject
- Date: Sun, 7 Jul 2019 23:49:53 +0000 (UTC)
commit a8a2a830013c4b69ee135829082fe67194461931
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Apr 22 12:58:26 2019 +0200
libtracker-data: Turn TrackerDBManager into a GObject
We want it to have signals and whatnot, plus could make the constructor
function have less arguments in the future.
src/libtracker-data/tracker-data-manager.c | 2 +-
src/libtracker-data/tracker-db-manager.c | 38 ++++++++++++++++++++++--------
src/libtracker-data/tracker-db-manager.h | 5 +++-
src/tracker/tracker-reset.c | 2 +-
4 files changed, 34 insertions(+), 13 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 31eaf0f14..512975c9b 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -4585,7 +4585,7 @@ tracker_data_manager_dispose (GObject *object)
tracker_db_manager_check_perform_vacuum (manager->db_manager);
}
- g_clear_pointer (&manager->db_manager, tracker_db_manager_free);
+ g_clear_object (&manager->db_manager);
}
G_OBJECT_CLASS (tracker_data_manager_parent_class)->dispose (object);
diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c
index 09cbf4ded..f2546ff0c 100644
--- a/src/libtracker-data/tracker-db-manager.c
+++ b/src/libtracker-data/tracker-db-manager.c
@@ -128,6 +128,7 @@ static TrackerDBDefinition db_base = {
};
struct _TrackerDBManager {
+ GObject parent_instance;
TrackerDBDefinition db;
gboolean locations_initialized;
gchar *data_dir;
@@ -147,6 +148,8 @@ struct _TrackerDBManager {
GThread *wal_thread;
};
+G_DEFINE_TYPE (TrackerDBManager, tracker_db_manager, G_TYPE_OBJECT)
+
static gboolean db_exec_no_reply (TrackerDBInterface *iface,
const gchar *query,
...);
@@ -598,7 +601,7 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
return NULL;
}
- db_manager = g_new0 (TrackerDBManager, 1);
+ db_manager = g_object_new (TRACKER_TYPE_DB_MANAGER, NULL);
db_manager->vtab_data = vtab_data;
/* First set defaults for return values */
@@ -667,7 +670,7 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
TRACKER_DB_OPEN_ERROR,
"Could not find database file:'%s'.", db_manager->db.abs_filename);
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
}
@@ -705,7 +708,7 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
TRACKER_DB_OPEN_ERROR,
"No reindexing supported in read-only mode (direct access)");
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
@@ -713,7 +716,7 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
if (internal_error) {
g_propagate_error (error, internal_error);
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
@@ -749,7 +752,7 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
TRACKER_DB_INTERFACE_ERROR,
TRACKER_DB_OPEN_ERROR,
"Corrupt db file");
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
}
@@ -765,7 +768,7 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
must_recreate = TRUE;
} else {
g_propagate_error (error, internal_error);
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
}
@@ -885,12 +888,12 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
/* Most serious error is the recreate one here */
g_clear_error (&internal_error);
g_propagate_error (error, new_error);
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
} else {
g_propagate_error (error, internal_error);
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
return NULL;
}
}
@@ -901,8 +904,9 @@ tracker_db_manager_new (TrackerDBManagerFlags flags,
}
void
-tracker_db_manager_free (TrackerDBManager *db_manager)
+tracker_db_manager_finalize (GObject *object)
{
+ TrackerDBManager *db_manager = TRACKER_DB_MANAGER (object);
gboolean readonly = (db_manager->flags & TRACKER_DB_MANAGER_READONLY) != 0;
g_async_queue_unref (db_manager->interfaces);
@@ -930,7 +934,8 @@ tracker_db_manager_free (TrackerDBManager *db_manager)
}
g_free (db_manager->in_use_filename);
- g_free (db_manager);
+
+ G_OBJECT_CLASS (tracker_db_manager_parent_class)->finalize (object);
}
void
@@ -1083,6 +1088,19 @@ tracker_db_manager_get_db_interface (TrackerDBManager *db_manager)
return interface;
}
+static void
+tracker_db_manager_init (TrackerDBManager *manager)
+{
+}
+
+static void
+tracker_db_manager_class_init (TrackerDBManagerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = tracker_db_manager_finalize;
+}
+
static void
wal_checkpoint (TrackerDBInterface *iface,
gboolean blocking)
diff --git a/src/libtracker-data/tracker-db-manager.h b/src/libtracker-data/tracker-db-manager.h
index 432a39810..06dee6ba4 100644
--- a/src/libtracker-data/tracker-db-manager.h
+++ b/src/libtracker-data/tracker-db-manager.h
@@ -30,6 +30,10 @@ G_BEGIN_DECLS
#error "only <libtracker-data/tracker-data.h> must be included directly."
#endif
+#define TRACKER_TYPE_DB_MANAGER (tracker_db_manager_get_type ())
+G_DECLARE_FINAL_TYPE (TrackerDBManager, tracker_db_manager,
+ TRACKER, DB_MANAGER, GObject)
+
#define TRACKER_DB_CACHE_SIZE_DEFAULT 250
#define TRACKER_DB_CACHE_SIZE_UPDATE 2000
@@ -57,7 +61,6 @@ TrackerDBManager *tracker_db_manager_new (TrackerDBManagerF
GObject *iface_data,
gpointer vtab_data,
GError **error);
-void tracker_db_manager_free (TrackerDBManager *db_manager);
void tracker_db_manager_remove_all (TrackerDBManager *db_manager);
void tracker_db_manager_optimize (TrackerDBManager *db_manager);
const gchar * tracker_db_manager_get_file (TrackerDBManager *db_manager);
diff --git a/src/tracker/tracker-reset.c b/src/tracker/tracker-reset.c
index 0c3acf7fd..18dab4e0d 100644
--- a/src/tracker/tracker-reset.c
+++ b/src/tracker/tracker-reset.c
@@ -264,7 +264,7 @@ reset_run (void)
tracker_db_manager_remove_all (db_manager);
tracker_db_manager_remove_version_file (db_manager);
- tracker_db_manager_free (db_manager);
+ g_object_unref (db_manager);
/* Unset log handler */
g_log_remove_handler (NULL, log_handler_id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]