summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-11-21 12:34:38 +0100
committerSam Thursfield <sam@afuera.me.uk>2018-07-16 21:12:04 +0200
commit428c8cc9a17aca687e79e0334ee5b6886efd2e6d (patch)
tree202c0e4d7dce9ca65d30563166cf322450fb8d02
parent7e1c860afd692e56817d42a4e583d675301c2c8a (diff)
downloadtracker-428c8cc9a17aca687e79e0334ee5b6886efd2e6d.tar.gz
libtracker-data: Move notify_transaction() down to libtracker-data
Now that we don't need upper layers' information to find out the right CommitType, push this call down together with the handling of the insert/delete/rollback callbacks. One particularity is that the commit callbacks will now be called from within the update thread, just like all the other callbacks. And this is fine, with all the preparation work from the previous commits.
-rw-r--r--src/libtracker-data/libtracker-data.vapi1
-rw-r--r--src/libtracker-data/tracker-data-update.c10
-rw-r--r--src/libtracker-data/tracker-data-update.h1
-rw-r--r--src/tracker-store/tracker-store.vala10
4 files changed, 3 insertions, 19 deletions
diff --git a/src/libtracker-data/libtracker-data.vapi b/src/libtracker-data/libtracker-data.vapi
index 2daae8061..f0300ae73 100644
--- a/src/libtracker-data/libtracker-data.vapi
+++ b/src/libtracker-data/libtracker-data.vapi
@@ -192,7 +192,6 @@ namespace Tracker {
public void update_sparql (string update) throws Sparql.Error;
public GLib.Variant update_sparql_blank (string update) throws Sparql.Error;
public void load_turtle_file (GLib.File file) throws Sparql.Error;
- public void notify_transaction ();
public void delete_statement (string? graph, string subject, string predicate, string object) throws Sparql.Error, DateError;
public void update_statement (string? graph, string subject, string predicate, string? object) throws Sparql.Error, DateError;
public void insert_statement (string? graph, string subject, string predicate, string object) throws Sparql.Error, DateError;
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index e552b10ce..444e5efee 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -3624,13 +3624,7 @@ tracker_data_commit_transaction (TrackerData *data,
g_hash_table_remove_all (data->update_buffer.resources_by_id);
g_hash_table_remove_all (data->update_buffer.resource_cache);
- data->in_journal_replay = FALSE;
-}
-
-void
-tracker_data_notify_transaction (TrackerData *data)
-{
- if (data->commit_callbacks) {
+ if (!data->in_journal_replay && data->commit_callbacks) {
guint n;
for (n = 0; n < data->commit_callbacks->len; n++) {
TrackerCommitDelegate *delegate;
@@ -3638,6 +3632,8 @@ tracker_data_notify_transaction (TrackerData *data)
delegate->callback (delegate->user_data);
}
}
+
+ data->in_journal_replay = FALSE;
}
void
diff --git a/src/libtracker-data/tracker-data-update.h b/src/libtracker-data/tracker-data-update.h
index 640df408a..97fdcd6a9 100644
--- a/src/libtracker-data/tracker-data-update.h
+++ b/src/libtracker-data/tracker-data-update.h
@@ -103,7 +103,6 @@ void tracker_data_begin_transaction_for_replay (TrackerData *
GError **error);
void tracker_data_commit_transaction (TrackerData *data,
GError **error);
-void tracker_data_notify_transaction (TrackerData *data);
void tracker_data_rollback_transaction (TrackerData *data);
void tracker_data_update_sparql (TrackerData *data,
const gchar *update,
diff --git a/src/tracker-store/tracker-store.vala b/src/tracker-store/tracker-store.vala
index d4b4d9646..a373e6155 100644
--- a/src/tracker-store/tracker-store.vala
+++ b/src/tracker-store/tracker-store.vala
@@ -147,8 +147,6 @@ public class Tracker.Store {
}
static bool task_finish_cb (Task task) {
- var data = task.data_manager.get_data ();
-
if (task.type == TaskType.QUERY) {
var query_task = (QueryTask) task;
@@ -164,19 +162,11 @@ public class Tracker.Store {
running_tasks.remove (task);
n_queries_running--;
} else if (task.type == TaskType.UPDATE || task.type == TaskType.UPDATE_BLANK) {
- if (task.error == null) {
- data.notify_transaction ();
- }
-
task.callback ();
task.error = null;
update_running = false;
} else if (task.type == TaskType.TURTLE) {
- if (task.error == null) {
- data.notify_transaction ();
- }
-
task.callback ();
task.error = null;