Commit 12d8f71d authored by Laurent Bigonville's avatar Laurent Bigonville

New upstream version 0.11.4

parent 2b71b812
This diff is collapsed.
......@@ -714,7 +714,7 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
......@@ -739,7 +739,7 @@ dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
......@@ -757,7 +757,7 @@ dist dist-all:
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
......@@ -767,7 +767,7 @@ distcheck: dist
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
......
Overview of changes from libfolks 0.11.3 to libfolks 0.11.4
===========================================================
Major changes:
• Various fixes for Vala compiler and VAPI changes in upstream projects
• Remove redundant locking
• Disable unknown BlueZ devices by default; BlueZ devices must now be explicitly
enabled via a configuration file before they will be queried for personas
• Fix build with latest versions of valadoc
Bugs fixed:
• Bug 781485 — Fails to build tests after update to evolution-data-server 3.24.1
• Bug 720274 — Store state about enabled BlueZ persona stores
• Bug 778005 — locking issues reported by the ThreadSanitizer
• Bug 773011 — empathy aggregates many different individuals into a single
roster entry (Also spinning at 100% cpu for 20-60 seconds while it does it)
Overview of changes from libfolks 0.11.2 to libfolks 0.11.3
===========================================================
......
......@@ -6,7 +6,7 @@ This source distribution also builds a Telepathy backend
libfolks classes (libfolks-telepathy.so).
Browse the official repository for folks here:
http://git.gnome.org/browse/folks
https://git.gnome.org/browse/folks
More information is available at:
https://wiki.gnome.org/Projects/Folks
......@@ -21,7 +21,7 @@ If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
dnl serial 11 (pkg-config-0.29)
dnl serial 11 (pkg-config-0.29.1)
dnl
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
......@@ -63,7 +63,7 @@ dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
[m4_define([PKG_MACROS_VERSION], [0.29])
[m4_define([PKG_MACROS_VERSION], [0.29.1])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
......
/* bluez-backend-factory.c generated by valac 0.29.3.10-b87a, the Vala compiler
/* bluez-backend-factory.c generated by valac 0.36.1.697-2b74, the Vala compiler
* generated from bluez-backend-factory.vala, do not modify */
/*
......@@ -60,9 +60,9 @@ void module_finalize (FolksBackendStore* backend_store);
* @since 0.9.6
*/
void module_init (FolksBackendStore* backend_store) {
FolksBackendStore* _tmp0_ = NULL;
FolksBackendsBlueZBackend* _tmp1_ = NULL;
FolksBackendsBlueZBackend* _tmp2_ = NULL;
FolksBackendStore* _tmp0_;
FolksBackendsBlueZBackend* _tmp1_;
FolksBackendsBlueZBackend* _tmp2_;
g_return_if_fail (backend_store != NULL);
_tmp0_ = backend_store;
_tmp1_ = folks_backends_blue_z_backend_new ();
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -146,7 +146,7 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
*
* @since 0.9.6
*/
public override Map<string, PersonaStore> persona_stores
public override Map<string, Folks.PersonaStore> persona_stores
{
get { return this._persona_stores_ro; }
}
......@@ -166,6 +166,10 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
var device_address = store.id; /* implicit assumption */
this._enabled_devices.remove (device_address);
this._save_enabled_devices.begin ((o, r) =>
{
this._save_enabled_devices.end (r);
});
if (!this._persona_stores.has_key (store.id))
return;
......@@ -188,6 +192,10 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
var device_address = store.id; /* implicit assumption */
this._enabled_devices.add (device_address);
this._save_enabled_devices.begin ((o, r) =>
{
this._save_enabled_devices.end (r);
});
/* See if any existing device objects correspond to the store. */
this._refresh_devices.begin ((o, r) =>
......@@ -221,6 +229,11 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
});
}
this._save_enabled_devices.begin ((o, r) =>
{
this._save_enabled_devices.end (r);
});
return;
}
......@@ -233,6 +246,11 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
this._enabled_devices.add (device_address);
}
this._save_enabled_devices.begin ((o, r) =>
{
this._save_enabled_devices.end (r);
});
this._refresh_devices.begin ((o, r) =>
{
this._refresh_devices.end (r);
......@@ -254,6 +272,7 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
this._persona_stores = new HashMap<string, PersonaStore> ();
this._persona_stores_ro = this._persona_stores.read_only_view;
this._watched_devices = new HashMap<string, PersonaStore> ();
this._enabled_devices = new SmallSet<string> ();
}
/**
......@@ -501,6 +520,12 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
return;
}
if (!this._enabled_devices.contains (device.address))
{
debug (" Device not in enabled devices list.");
return;
}
yield this._add_persona_store (device, path);
}
......@@ -525,6 +550,105 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
}
}
private string _get_enabled_devices_key_file_path ()
{
var file = File.new_for_path (Environment.get_user_data_dir ());
file = file.get_child ("folks");
file = file.get_child ("bluez-persona-stores.ini");
return file.get_path ();
}
/**
* Save the list of enabled devices to a configuration file.
*
* @since 0.11.4
*/
private async void _save_enabled_devices ()
{
var kf = new GLib.KeyFile ();
var kf_path = this._get_enabled_devices_key_file_path ();
foreach (var address in this._enabled_devices)
kf.set_boolean (address, "enabled", true);
debug ("Saving BlueZ enabled devices key file ‘%s’.", kf_path);
try
{
var file = File.new_for_path (kf_path);
var data = kf.to_data ();
file.replace_contents (data.data,
null, false, FileCreateFlags.PRIVATE,
null, null);
}
catch (GLib.Error e)
{
warning ("Could not write updated BlueZ enabled devices key file " +
"‘%s’: %s", kf_path, e.message);
}
}
/**
* Load the list of enabled devices from a configuration file.
*
* @since 0.11.4
*/
private async void _load_enabled_devices ()
{
var kf = new GLib.KeyFile ();
var kf_path = this._get_enabled_devices_key_file_path ();
debug ("Loading BlueZ enabled devices key file ‘%s’.", kf_path);
try
{
uint8[] contents;
var file = File.new_for_path (kf_path);
yield file.load_contents_async (null, out contents, null);
unowned string contents_s = (string) contents;
if (contents_s.length > 0)
{
kf.load_from_data (contents_s,
contents_s.length, KeyFileFlags.KEEP_COMMENTS);
}
}
catch (GLib.Error e1)
{
if (!(e1 is IOError.NOT_FOUND))
{
warning ("The BlueZ enabled devices key file ‘%s’ could not be " +
"loaded: %s", kf_path, e1.message);
return;
}
else
{
debug (" Not found.");
}
}
/* Update the set of enabled devices in memory. */
this._enabled_devices.clear ();
var groups = kf.get_groups ();
foreach (var address in groups)
{
try
{
if (kf.get_boolean (address, "enabled"))
{
debug (" Enabling device ‘%s’", address);
this._enabled_devices.add (address);
}
}
catch (GLib.KeyFileError e)
{
/* Ignore. */
}
}
}
private delegate Type TypeFunc ();
/**
......@@ -542,6 +666,9 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
}
/* In brief, this function:
* 0. Loads the list of enabled devices — these are the Bluetooth devices
* which will be turned into PersonaStores (if they are connected,
* paired, support PBAP, etc.).
* 1. Connects to org.bluez. If that’s not available, we assume BlueZ
* is not installed (or is not version 5), and throw an error, leaving
* the store unprepared.
......@@ -555,10 +682,17 @@ public class Folks.Backends.BlueZ.Backend : Folks.Backend
this._prepare_pending = true;
this.freeze_notify ();
/* Load the enabled devices. */
yield this._load_enabled_devices ();
try
{
this._manager =
#if VALA_0_36
yield new DBusObjectManagerClient.for_bus (BusType.SYSTEM,
#else
yield DBusObjectManagerClient.new_for_bus (BusType.SYSTEM,
#endif
DBusObjectManagerClientFlags.NONE, "org.bluez", "/",
/* DBusProxyTypeFunc: */
(manager, path, iface_name) =>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -186,7 +186,7 @@ public class Folks.Backends.BlueZ.PersonaStore : Folks.PersonaStore
*
* @since 0.9.6
*/
public override Map<string, Persona> personas
public override Map<string, Folks.Persona> personas
{
get { return this._personas_ro; }
}
......
This diff is collapsed.
This diff is collapsed.
/* org-bluez.c generated by valac 0.29.3.10-b87a, the Vala compiler
/* org-bluez.c generated by valac 0.36.1.697-2b74, the Vala compiler
* generated from org-bluez.vala, do not modify */
/*
......@@ -598,7 +598,8 @@ static guint32 org_bluez_device_dbus_proxy_get_bluetooth_class (orgbluezDevice*
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return 0U;
guint32 _tmp65_ = 0U;
return _tmp65_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -623,7 +624,8 @@ static guint16 org_bluez_device_dbus_proxy_get_appearance (orgbluezDevice* self)
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return 0U;
guint16 _tmp66_ = 0U;
return _tmp66_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -638,12 +640,12 @@ static gchar** org_bluez_device_dbus_proxy_get_uuids (orgbluezDevice* self, int*
GVariant *_inner_reply;
gchar** _result;
int _result_length1;
gchar** _tmp62_;
int _tmp62__length;
int _tmp62__size;
int _tmp62__length1;
GVariantIter _tmp63_;
GVariant* _tmp64_;
gchar** _tmp67_;
int _tmp67__length;
int _tmp67__size;
int _tmp67__length1;
GVariantIter _tmp68_;
GVariant* _tmp69_;
_inner_reply = g_dbus_proxy_get_cached_property ((GDBusProxy *) self, "UUIDs");
if (!_inner_reply) {
GVariant *_arguments;
......@@ -661,22 +663,22 @@ static gchar** org_bluez_device_dbus_proxy_get_uuids (orgbluezDevice* self, int*
g_variant_unref (_reply);
}
_result_length1 = 0;
_tmp62_ = g_new (gchar*, 5);
_tmp62__length = 0;
_tmp62__size = 4;
_tmp62__length1 = 0;
g_variant_iter_init (&_tmp63_, _inner_reply);
for (; (_tmp64_ = g_variant_iter_next_value (&_tmp63_)) != NULL; _tmp62__length1++) {
if (_tmp62__size == _tmp62__length) {
_tmp62__size = 2 * _tmp62__size;
_tmp62_ = g_renew (gchar*, _tmp62_, _tmp62__size + 1);
_tmp67_ = g_new (gchar*, 5);
_tmp67__length = 0;
_tmp67__size = 4;
_tmp67__length1 = 0;
g_variant_iter_init (&_tmp68_, _inner_reply);
for (; (_tmp69_ = g_variant_iter_next_value (&_tmp68_)) != NULL; _tmp67__length1++) {
if (_tmp67__size == _tmp67__length) {
_tmp67__size = 2 * _tmp67__size;
_tmp67_ = g_renew (gchar*, _tmp67_, _tmp67__size + 1);
}
_tmp62_[_tmp62__length++] = g_variant_dup_string (_tmp64_, NULL);
g_variant_unref (_tmp64_);
_tmp67_[_tmp67__length++] = g_variant_dup_string (_tmp69_, NULL);
g_variant_unref (_tmp69_);
}
_result_length1 = _tmp62__length1;
_tmp62_[_tmp62__length] = NULL;
_result = _tmp62_;
_result_length1 = _tmp67__length1;
_tmp67_[_tmp67__length] = NULL;
_result = _tmp67_;
*result_length1 = _result_length1;
g_variant_unref (_inner_reply);
return _result;
......@@ -697,7 +699,8 @@ static gboolean org_bluez_device_dbus_proxy_get_paired (orgbluezDevice* self) {
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return FALSE;
gboolean _tmp70_ = FALSE;
return _tmp70_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -722,7 +725,8 @@ static gboolean org_bluez_device_dbus_proxy_get_connected (orgbluezDevice* self)
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return FALSE;
gboolean _tmp71_ = FALSE;
return _tmp71_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -747,7 +751,8 @@ static gboolean org_bluez_device_dbus_proxy_get_trusted (orgbluezDevice* self) {
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return FALSE;
gboolean _tmp72_ = FALSE;
return _tmp72_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -791,7 +796,8 @@ static gboolean org_bluez_device_dbus_proxy_get_blocked (orgbluezDevice* self) {
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return FALSE;
gboolean _tmp73_ = FALSE;
return _tmp73_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -904,7 +910,8 @@ static gboolean org_bluez_device_dbus_proxy_get_legacy_pairing (orgbluezDevice*
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return FALSE;
gboolean _tmp74_ = FALSE;
return _tmp74_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -954,7 +961,8 @@ static gint16 org_bluez_device_dbus_proxy_get_rssi (orgbluezDevice* self) {
_arguments = g_variant_builder_end (&_arguments_builder);
_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.freedesktop.DBus.Properties.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL);
if (!_reply) {
return 0;
gint16 _tmp75_ = 0;
return _tmp75_;
}
g_variant_get (_reply, "(v)", &_inner_reply);
g_variant_unref (_reply);
......@@ -995,7 +1003,7 @@ static void org_bluez_device_proxy_org_bluez_device_interface_init (orgbluezDevi
static void _dbus_org_bluez_device_connect (orgbluezDevice* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
GError* error = NULL;
GVariantIter _arguments_iter;
GDBusMessage* _reply_message;
GDBusMessage* _reply_message = NULL;
GVariant* _reply;
GVariantBuilder _reply_builder;
g_variant_iter_init (&_arguments_iter, _parameters_);
......@@ -1017,7 +1025,7 @@ static void _dbus_org_bluez_device_connect (orgbluezDevice* self, GVariant* _par
static void _dbus_org_bluez_device_disconnect (orgbluezDevice* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
GError* error = NULL;
GVariantIter _arguments_iter;
GDBusMessage* _reply_message;
GDBusMessage* _reply_message = NULL;
GVariant* _reply;
GVariantBuilder _reply_builder;
g_variant_iter_init (&_arguments_iter, _parameters_);
......@@ -1040,14 +1048,14 @@ static void _dbus_org_bluez_device_disconnect_profile (orgbluezDevice* self, GVa
GError* error = NULL;
GVariantIter _arguments_iter;
gchar* uuid = NULL;
GVariant* _tmp65_;
GDBusMessage* _reply_message;
GVariant* _tmp76_;
GDBusMessage* _reply_message = NULL;
GVariant* _reply;
GVariantBuilder _reply_builder;
g_variant_iter_init (&_arguments_iter, _parameters_);
_tmp65_ = g_variant_iter_next_value (&_arguments_iter);
uuid = g_variant_dup_string (_tmp65_, NULL);
g_variant_unref (_tmp65_);
_tmp76_ = g_variant_iter_next_value (&_arguments_iter);
uuid = g_variant_dup_string (_tmp76_, NULL);
g_variant_unref (_tmp76_);
org_bluez_device_disconnect_profile (self, uuid, &error);
if (error) {
g_dbus_method_invocation_return_gerror (invocation, error);
......@@ -1057,17 +1065,17 @@ static void _dbus_org_bluez_device_disconnect_profile (orgbluezDevice* self, GVa
g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
_reply = g_variant_builder_end (&_reply_builder);
g_dbus_message_set_body (_reply_message, _reply);
_g_free0 (uuid);
g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
g_object_unref (invocation);
g_object_unref (_reply_message);
_g_free0 (uuid);
}
static void _dbus_org_bluez_device_pair (orgbluezDevice* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
GError* error = NULL;
GVariantIter _arguments_iter;
GDBusMessage* _reply_message;
GDBusMessage* _reply_message = NULL;
GVariant* _reply;
GVariantBuilder _reply_builder;
g_variant_iter_init (&_arguments_iter, _parameters_);
......@@ -1089,7 +1097,7 @@ static void _dbus_org_bluez_device_pair (orgbluezDevice* self, GVariant* _parame
static void _dbus_org_bluez_device_cancel_pairing (orgbluezDevice* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
GError* error = NULL;
GVariantIter _arguments_iter;
GDBusMessage* _reply_message;
GDBusMessage* _reply_message = NULL;
GVariant* _reply;
GVariantBuilder _reply_builder;
g_variant_iter_init (&_arguments_iter, _parameters_);
......@@ -1180,18 +1188,18 @@ static GVariant* _dbus_org_bluez_device_get_appearance (orgbluezDevice* self) {
static GVariant* _dbus_org_bluez_device_get_uuids (orgbluezDevice* self) {
gchar** result;
int result_length1 = 0;
gchar** _tmp66_;
GVariantBuilder _tmp67_;
int _tmp68_;
GVariant* _reply;
gchar** _tmp77_;
GVariantBuilder _tmp78_;
int _tmp79_;
result = org_bluez_device_get_uuids (self, &result_length1);
_tmp66_ = result;
g_variant_builder_init (&_tmp67_, G_VARIANT_TYPE ("as"));
for (_tmp68_ = 0; _tmp68_ < result_length1; _tmp68_++) {
g_variant_builder_add_value (&_tmp67_, g_variant_new_string (*_tmp66_));
_tmp66_++;
_tmp77_ = result;
g_variant_builder_init (&_tmp78_, G_VARIANT_TYPE ("as"));
for (_tmp79_ = 0; _tmp79_ < result_length1; _tmp79_++) {
g_variant_builder_add_value (&_tmp78_, g_variant_new_string (*_tmp77_));
_tmp77_++;
}
_reply = g_variant_builder_end (&_tmp67_);
_reply = g_variant_builder_end (&_tmp78_);
result = (_vala_array_free (result, result_length1, (GDestroyNotify) g_free), NULL);
return _reply;
}
......
/* dummy-backend-factory.c generated by valac 0.26.2.1-1f25, the Vala compiler
/* dummy-backend-factory.c generated by valac 0.35.3.10-6b27, the Vala compiler
* generated from dummy-backend-factory.vala, do not modify */
/*
......@@ -47,9 +47,9 @@ void module_finalize (FolksBackendStore* backend_store);
* @since 0.9.7
*/
void module_init (FolksBackendStore* backend_store) {
FolksBackendStore* _tmp0_ = NULL;
FolksDummyBackend* _tmp1_ = NULL;
FolksDummyBackend* _tmp2_ = NULL;
FolksBackendStore* _tmp0_;
FolksDummyBackend* _tmp1_;