[folks/wip/nielsdg/less-refs] edsf: Don't make copies of E.VCardAttribute
- From: Niels De Graef <nielsdg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [folks/wip/nielsdg/less-refs] edsf: Don't make copies of E.VCardAttribute
- Date: Sun, 7 Jun 2020 12:44:13 +0000 (UTC)
commit c7572e4408fff842c44170295dfbaf2b9e5bcc90
Author: Niels De Graef <nielsdegraef gmail com>
Date: Wed Nov 27 23:29:01 2019 +0100
edsf: Don't make copies of E.VCardAttribute
Using `var` in Vala automatically means you take a strong reference,
which in the case of boxed types means that we will copy them (even if
not necessary). We probably want to avoid this inside `Edsf.Persona`,
since that means we might do multiple copies on each contact of a user.
backends/eds/lib/edsf-persona-store.vala | 4 ++--
backends/eds/lib/edsf-persona.vala | 17 ++++++++++-------
2 files changed, 12 insertions(+), 9 deletions(-)
---
diff --git a/backends/eds/lib/edsf-persona-store.vala b/backends/eds/lib/edsf-persona-store.vala
index 4afd9d22..8543edec 100644
--- a/backends/eds/lib/edsf-persona-store.vala
+++ b/backends/eds/lib/edsf-persona-store.vala
@@ -1747,7 +1747,7 @@ public class Edsf.PersonaStore : Folks.PersonaStore
E.VCardAttribute new_attr = new E.VCardAttribute (null, name);
new_attr.add_value (details.value);
- vcard.add_attribute (new_attr);
+ vcard.add_attribute ((owned) new_attr);
yield this._commit_modified_property (persona, null);
}
@@ -2241,7 +2241,7 @@ public class Edsf.PersonaStore : Folks.PersonaStore
new_attr.add_value (group);
}
- vcard.add_attribute (new_attr);
+ vcard.add_attribute ((owned) new_attr);
}
internal async void _set_gender (Edsf.Persona persona,
diff --git a/backends/eds/lib/edsf-persona.vala b/backends/eds/lib/edsf-persona.vala
index d3bb45de..563dbcee 100644
--- a/backends/eds/lib/edsf-persona.vala
+++ b/backends/eds/lib/edsf-persona.vala
@@ -1178,7 +1178,7 @@ public class Edsf.Persona : Folks.Persona,
private void _update_gender ()
{
var gender = Gender.UNSPECIFIED;
- var gender_attr =
+ unowned E.VCardAttribute gender_attr =
this.contact.get_attribute (Edsf.Persona.gender_attribute_name);
if (gender_attr != null)
@@ -1391,7 +1391,8 @@ public class Edsf.Persona : Folks.Persona,
null, null, AbstractFieldDetails<string>.hash_static,
AbstractFieldDetails<string>.equal_static);
- var services = this.contact.get_attribute ("X-FOLKS-WEB-SERVICES-IDS");
+ unowned E.VCardAttribute services =
+ this.contact.get_attribute ("X-FOLKS-WEB-SERVICES-IDS");
if (services != null)
{
foreach (var service in ((!) services).get_params ())
@@ -1425,7 +1426,7 @@ public class Edsf.Persona : Folks.Persona,
AbstractFieldDetails<string>.equal_static);
var attrs = this.contact.get_attributes (E.ContactField.EMAIL);
- foreach (var attr in attrs)
+ foreach (unowned E.VCardAttribute attr in attrs)
{
var val = attr.get_value ();
if (val == null || (!) val == "")
@@ -1699,7 +1700,7 @@ public class Edsf.Persona : Folks.Persona,
{
var addresses = this.contact.get_attributes (
im_eds_map.lookup (im_proto));
- foreach (var attr in addresses)
+ foreach (unowned E.VCardAttribute attr in addresses)
{
try
{
@@ -2013,7 +2014,7 @@ public class Edsf.Persona : Folks.Persona,
AbstractFieldDetails<string>.equal_static);
var attrs = this.contact.get_attributes (E.ContactField.TEL);
- foreach (var attr in attrs)
+ foreach (unowned E.VCardAttribute attr in attrs)
{
var val = attr.get_value ();
if (val == null || (!) val == "")
@@ -2155,7 +2156,8 @@ public class Edsf.Persona : Folks.Persona,
{
var new_local_ids = new SmallSet<string> ();
- var ids = this.contact.get_attribute ("X-FOLKS-CONTACTS-IDS");
+ unowned E.VCardAttribute ids =
+ this.contact.get_attribute ("X-FOLKS-CONTACTS-IDS");
if (ids != null)
{
unowned GLib.List<string> ids_v = ((!) ids).get_values ();
@@ -2219,7 +2221,8 @@ public class Edsf.Persona : Folks.Persona,
{
bool is_fav = false;
- var fav = this.contact.get_attribute ("X-FOLKS-FAVOURITE");
+ unowned E.VCardAttribute fav =
+ this.contact.get_attribute ("X-FOLKS-FAVOURITE");
if (fav != null)
{
var val = ((!) fav).get_value ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]