summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-11-21 12:34:38 +0100
committerCarlos Garnacho <carlosg@gnome.org>2018-07-20 18:27:32 +0200
commit09fae200db0e0cba4fc91c7d50e443e1da08e328 (patch)
tree90707092b769f46fc61f741b3092984bdea88aea
parent1d59f03662b91a1ad6475333fbe778a38a38aa2b (diff)
downloadtracker-09fae200db0e0cba4fc91c7d50e443e1da08e328.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;