[tracker] libtracker-data: Do not use per-thread interfaces with direct access
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-data: Do not use per-thread interfaces with direct access
- Date: Wed, 19 Jan 2011 10:18:35 +0000 (UTC)
commit 2ad8536819d29d1eba55855eafb9cdea604e4082
Author: Jürg Billeter <j bitron ch>
Date: Wed Jan 19 11:05:51 2011 +0100
libtracker-data: Do not use per-thread interfaces with direct access
src/libtracker-data/tracker-db-manager.c | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c
index 3556bec..3dd40a0 100644
--- a/src/libtracker-data/tracker-db-manager.c
+++ b/src/libtracker-data/tracker-db-manager.c
@@ -162,6 +162,7 @@ static GStaticPrivate interface_data_key = G_STATIC_PRIVATE_INIT;
/* mutex used by singleton connection in libtracker-direct, not used by tracker-store */
static GStaticMutex global_mutex = G_STATIC_MUTEX_INIT;
+static TrackerDBInterface *global_iface;
static const gchar *
location_to_directory (TrackerDBLocation location)
@@ -1034,6 +1035,8 @@ tracker_db_manager_init (TrackerDBManagerFlags flags,
if (flags & TRACKER_DB_MANAGER_READONLY) {
resources_iface = tracker_db_manager_get_db_interfaces_ro (1,
TRACKER_DB_METADATA);
+ /* libtracker-direct does not use per-thread interfaces */
+ global_iface = resources_iface;
} else {
resources_iface = tracker_db_manager_get_db_interfaces (1,
TRACKER_DB_METADATA);
@@ -1050,7 +1053,9 @@ tracker_db_manager_init (TrackerDBManagerFlags flags,
s_cache_size = select_cache_size;
u_cache_size = update_cache_size;
- g_static_private_set (&interface_data_key, resources_iface, (GDestroyNotify) g_object_unref);
+ if ((flags & TRACKER_DB_MANAGER_READONLY) == 0) {
+ g_static_private_set (&interface_data_key, resources_iface, (GDestroyNotify) g_object_unref);
+ }
return TRUE;
}
@@ -1084,6 +1089,12 @@ tracker_db_manager_shutdown (void)
sys_tmp_dir = NULL;
g_free (sql_dir);
+ if (global_iface) {
+ /* libtracker-direct */
+ g_object_unref (global_iface);
+ global_iface = NULL;
+ }
+
/* shutdown db interfaces in all threads */
g_static_private_free (&interface_data_key);
@@ -1501,6 +1512,12 @@ tracker_db_manager_get_db_interface (void)
TrackerDBInterface *interface;
g_return_val_if_fail (initialized != FALSE, NULL);
+
+ if (global_iface) {
+ /* libtracker-direct */
+ return global_iface;
+ }
+
interface = g_static_private_get (&interface_data_key);
/* Ensure the interface is there */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]