[tracker] libtracker-data: Make TrackerDBStatement a GInitiallyUnowned



commit 54b31813c7fb6399a4309aa350bec0c9ecad071f
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Oct 22 17:09:38 2016 +0200

    libtracker-data: Make TrackerDBStatement a GInitiallyUnowned
    
    We actually deal with it as if it were (cached stmts have one ref
    owned by the cache, and one by the caller. non-cached has just one
    reference).
    
    So make TrackerDBStatement actually an unowned type, and
    g_object_ref_sink() in both places, if the stmt is cached the
    ref will be sunk by the cache, and an extra ref added for the
    caller, and if non-cached the only sunk reference will be the
    callers'.

 src/libtracker-data/tracker-db-interface-sqlite.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 2958cba..1f21851 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -120,7 +120,7 @@ struct TrackerDBCursorClass {
 };
 
 struct TrackerDBStatement {
-       GObject parent_instance;
+       GInitiallyUnowned parent_instance;
        TrackerDBInterface *db_interface;
        sqlite3_stmt *stmt;
        gboolean stmt_is_sunk;
@@ -163,7 +163,7 @@ G_DEFINE_TYPE_WITH_CODE (TrackerDBInterface, tracker_db_interface, G_TYPE_OBJECT
                          G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
                                                 tracker_db_interface_initable_iface_init));
 
-G_DEFINE_TYPE (TrackerDBStatement, tracker_db_statement, G_TYPE_OBJECT)
+G_DEFINE_TYPE (TrackerDBStatement, tracker_db_statement, G_TYPE_INITIALLY_UNOWNED)
 
 G_DEFINE_TYPE (TrackerDBCursor, tracker_db_cursor, TRACKER_SPARQL_TYPE_CURSOR)
 
@@ -2051,7 +2051,7 @@ tracker_db_interface_lru_insert_unchecked (TrackerDBInterface          *db_inter
         */
        g_hash_table_replace (db_interface->dynamic_statements,
                              (gpointer) sqlite3_sql (stmt->stmt),
-                             stmt);
+                             g_object_ref_sink (stmt));
 
        /* So the ring looks a bit like this: *
         *                                    *
@@ -2184,7 +2184,7 @@ tracker_db_interface_create_statement (TrackerDBInterface           *db_interfac
 
        g_free (full_query);
 
-       return (cache_type != TRACKER_DB_STATEMENT_CACHE_TYPE_NONE) ? g_object_ref (stmt) : stmt;
+       return g_object_ref_sink (stmt);
 }
 
 static void


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