[tracker/wip/carlosg/deserializer-cursors: 10/15] libtracker-sparql: Set connection consistently on all TrackerSparqlCursor




commit ae36610221aa70d1a88244e906c3dbfad4fcd3ca
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun May 1 15:37:03 2022 +0200

    libtracker-sparql: Set connection consistently on all TrackerSparqlCursor
    
    Do this from the generic code, in order to ensure all TrackerSparqlCursor
    that leave from public API functions have a connection assigned.

 src/libtracker-sparql/direct/tracker-direct.c |  3 ---
 src/libtracker-sparql/tracker-connection.c    | 26 ++++++++++++++++++-------
 src/libtracker-sparql/tracker-statement.c     | 28 +++++++++++++++++++++------
 3 files changed, 41 insertions(+), 16 deletions(-)
---
diff --git a/src/libtracker-sparql/direct/tracker-direct.c b/src/libtracker-sparql/direct/tracker-direct.c
index 20ae389ab..66c10410f 100644
--- a/src/libtracker-sparql/direct/tracker-direct.c
+++ b/src/libtracker-sparql/direct/tracker-direct.c
@@ -813,9 +813,6 @@ tracker_direct_connection_query (TrackerSparqlConnection  *self,
        cursor = tracker_sparql_execute_cursor (query, NULL, &inner_error);
        tracker_direct_connection_update_timestamp (conn);
        g_object_unref (query);
-
-       if (cursor)
-               tracker_sparql_cursor_set_connection (cursor, self);
        g_mutex_unlock (&priv->mutex);
 
        if (inner_error)
diff --git a/src/libtracker-sparql/tracker-connection.c b/src/libtracker-sparql/tracker-connection.c
index f964f44ae..cb817b765 100644
--- a/src/libtracker-sparql/tracker-connection.c
+++ b/src/libtracker-sparql/tracker-connection.c
@@ -251,15 +251,21 @@ tracker_sparql_connection_query (TrackerSparqlConnection  *connection,
                                  GCancellable             *cancellable,
                                  GError                  **error)
 {
+       TrackerSparqlCursor *cursor;
+
        g_return_val_if_fail (TRACKER_IS_SPARQL_CONNECTION (connection), NULL);
        g_return_val_if_fail (sparql != NULL, NULL);
        g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), NULL);
        g_return_val_if_fail (!error || !*error, NULL);
 
-       return TRACKER_SPARQL_CONNECTION_GET_CLASS (connection)->query (connection,
-                                                                       sparql,
-                                                                       cancellable,
-                                                                       error);
+       cursor = TRACKER_SPARQL_CONNECTION_GET_CLASS (connection)->query (connection,
+                                                                         sparql,
+                                                                         cancellable,
+                                                                         error);
+       if (cursor)
+               tracker_sparql_cursor_set_connection (cursor, connection);
+
+       return cursor;
 }
 
 /**
@@ -308,13 +314,19 @@ tracker_sparql_connection_query_finish (TrackerSparqlConnection  *connection,
                                         GAsyncResult             *res,
                                         GError                  **error)
 {
+       TrackerSparqlCursor *cursor;
+
        g_return_val_if_fail (TRACKER_IS_SPARQL_CONNECTION (connection), NULL);
        g_return_val_if_fail (G_IS_ASYNC_RESULT (res), NULL);
        g_return_val_if_fail (!error || !*error, NULL);
 
-       return TRACKER_SPARQL_CONNECTION_GET_CLASS (connection)->query_finish (connection,
-                                                                              res,
-                                                                              error);
+       cursor = TRACKER_SPARQL_CONNECTION_GET_CLASS (connection)->query_finish (connection,
+                                                                                res,
+                                                                                error);
+       if (cursor)
+               tracker_sparql_cursor_set_connection (cursor, connection);
+
+       return cursor;
 }
 
 /**
diff --git a/src/libtracker-sparql/tracker-statement.c b/src/libtracker-sparql/tracker-statement.c
index 72c8604f6..04d1bc4c7 100644
--- a/src/libtracker-sparql/tracker-statement.c
+++ b/src/libtracker-sparql/tracker-statement.c
@@ -324,13 +324,21 @@ tracker_sparql_statement_execute (TrackerSparqlStatement  *stmt,
                                   GCancellable            *cancellable,
                                   GError                 **error)
 {
+       TrackerSparqlStatementPrivate *priv =
+               tracker_sparql_statement_get_instance_private (stmt);
+       TrackerSparqlCursor *cursor;
+
        g_return_val_if_fail (TRACKER_IS_SPARQL_STATEMENT (stmt), NULL);
        g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), NULL);
        g_return_val_if_fail (!error || !*error, NULL);
 
-       return TRACKER_SPARQL_STATEMENT_GET_CLASS (stmt)->execute (stmt,
-                                                                  cancellable,
-                                                                  error);
+       cursor = TRACKER_SPARQL_STATEMENT_GET_CLASS (stmt)->execute (stmt,
+                                                                    cancellable,
+                                                                    error);
+       if (cursor)
+               tracker_sparql_cursor_set_connection (cursor, priv->connection);
+
+       return cursor;
 }
 
 /**
@@ -374,13 +382,21 @@ tracker_sparql_statement_execute_finish (TrackerSparqlStatement  *stmt,
                                          GAsyncResult            *res,
                                          GError                 **error)
 {
+       TrackerSparqlStatementPrivate *priv =
+               tracker_sparql_statement_get_instance_private (stmt);
+       TrackerSparqlCursor *cursor;
+
        g_return_val_if_fail (TRACKER_IS_SPARQL_STATEMENT (stmt), NULL);
        g_return_val_if_fail (G_IS_ASYNC_RESULT (res), NULL);
        g_return_val_if_fail (!error || !*error, NULL);
 
-       return TRACKER_SPARQL_STATEMENT_GET_CLASS (stmt)->execute_finish (stmt,
-                                                                         res,
-                                                                         error);
+       cursor = TRACKER_SPARQL_STATEMENT_GET_CLASS (stmt)->execute_finish (stmt,
+                                                                           res,
+                                                                           error);
+       if (cursor)
+               tracker_sparql_cursor_set_connection (cursor, priv->connection);
+
+       return cursor;
 }
 
 /**


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