void tracker_ontologies_shutdown (void) { if (!initialized) { return; } g_ptr_array_foreach (namespaces, (GFunc) g_object_unref, NULL); g_ptr_array_free (namespaces, TRUE); g_hash_table_unref (namespace_uris); namespace_uris = NULL; g_ptr_array_foreach (ontologies, (GFunc) g_object_unref, NULL); g_ptr_array_free (ontologies, TRUE); g_hash_table_unref (ontology_uris); ontology_uris = NULL; g_ptr_array_foreach (classes, (GFunc) g_object_unref, NULL); g_ptr_array_free (classes, TRUE); g_hash_table_unref (class_uris); class_uris = NULL; g_hash_table_unref (id_uri_pairs); id_uri_pairs = NULL; g_ptr_array_foreach (properties, (GFunc) g_object_unref, NULL); g_ptr_array_free (properties, TRUE); g_hash_table_unref (property_uris); property_uris = NULL; g_type_class_unref (property_type_enum_class); property_type_enum_class = NULL; if (rdf_type) { g_object_unref (rdf_type); rdf_type = NULL; } if (gvdb_table) { gvdb_table_unref (gvdb_properties_table); gvdb_properties_table = NULL; gvdb_table_unref (gvdb_classes_table); gvdb_classes_table = NULL; gvdb_table_unref (gvdb_namespaces_table); gvdb_namespaces_table = NULL; gvdb_table_unref (gvdb_table); gvdb_table = NULL; } initialized = FALSE; }
/** * g_resource_unref: * @resource: A #GResource * * Atomically decrements the reference count of @resource by one. If the * reference count drops to 0, all memory allocated by the array is * released. This function is MT-safe and may be called from any * thread. * * Since: 2.32 **/ void g_resource_unref (GResource *resource) { if (g_atomic_int_dec_and_test (&resource->ref_count)) { gvdb_table_unref (resource->table); g_free (resource); } }
/** * g_settings_schema_source_unref: * @source: a #GSettingsSchemaSource * * Decrease the reference count of @source, possibly freeing it. * * Since: 2.32 **/ void g_settings_schema_source_unref (GSettingsSchemaSource *source) { if (g_atomic_int_dec_and_test (&source->ref_count)) { if (source == schema_sources) g_error ("g_settings_schema_source_unref() called too many times on the default schema source"); if (source->parent) g_settings_schema_source_unref (source->parent); gvdb_table_unref (source->table); g_free (source->directory); if (source->text_tables) { g_hash_table_unref (source->text_tables[0]); g_hash_table_unref (source->text_tables[1]); g_free (source->text_tables); } g_slice_free (GSettingsSchemaSource, source); } }