summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/test.c6
-rw-r--r--salut/plugin.h11
-rw-r--r--src/plugin-loader.c7
-rw-r--r--src/plugin.c4
4 files changed, 20 insertions, 8 deletions
diff --git a/plugins/test.c b/plugins/test.c
index 9df8a61a..803a7aa9 100644
--- a/plugins/test.c
+++ b/plugins/test.c
@@ -39,13 +39,13 @@ test_plugin_class_init (TestPluginClass *klass)
static void
initialize (SalutPlugin *plugin,
TpBaseConnectionManager *connection_manager,
- SalutCreateProtocolImpl callback)
+ const SalutPluginInitializeCallbacks *callbacks)
{
DEBUG ("%p on connection manager %p", plugin, connection_manager);
/* If you wanted to add another protocol you could do it here by
- * creating the protocol object and then calling
- * tp_base_connection_manager_add_protocol(). */
+ * creating the protocol object with callbacks->create_protocol
+ * and then calling tp_base_connection_manager_add_protocol(). */
}
static GPtrArray *
diff --git a/salut/plugin.h b/salut/plugin.h
index fe45ddf6..c10ba573 100644
--- a/salut/plugin.h
+++ b/salut/plugin.h
@@ -65,16 +65,23 @@ typedef GPtrArray * (*SalutPluginCreateChannelManagersImpl) (
SalutPlugin *plugin,
SalutPluginConnection *plugin_connection);
+typedef struct _SalutPluginInitializeCallbacks SalutPluginInitializeCallbacks;
+
typedef TpBaseProtocol * (*SalutCreateProtocolImpl) (GType backend_type,
const gchar *dnssd_name,
const gchar *protocol_name,
const gchar *english_name,
const gchar *icon_name);
+struct _SalutPluginInitializeCallbacks {
+ SalutCreateProtocolImpl create_protocol;
+ GCallback _padding[7];
+};
+
typedef void (*SalutPluginInitializeImpl) (
SalutPlugin *plugin,
TpBaseConnectionManager *connection_manager,
- SalutCreateProtocolImpl callback);
+ const SalutPluginInitializeCallbacks *callbacks);
#define SALUT_PLUGIN_CURRENT_VERSION 1
@@ -157,7 +164,7 @@ SalutSidecar * salut_plugin_create_sidecar_finish (
void salut_plugin_initialize (
SalutPlugin *plugin,
TpBaseConnectionManager *connection_manager,
- SalutCreateProtocolImpl proto_ctor);
+ const SalutPluginInitializeCallbacks *callbacks);
GPtrArray * salut_plugin_create_channel_managers (
SalutPlugin *plugin,
diff --git a/src/plugin-loader.c b/src/plugin-loader.c
index efcb7539..024fd632 100644
--- a/src/plugin-loader.c
+++ b/src/plugin-loader.c
@@ -323,6 +323,11 @@ void
salut_plugin_loader_initialize (SalutPluginLoader *self,
TpBaseConnectionManager *connection_manager)
{
+ static const SalutPluginInitializeCallbacks callbacks = {
+ salut_protocol_new,
+ { NULL, }
+ };
+
guint i;
for (i = 0; i < self->priv->plugins->len; i++)
@@ -330,7 +335,7 @@ salut_plugin_loader_initialize (SalutPluginLoader *self,
SalutPlugin *plugin = g_ptr_array_index (self->priv->plugins, i);
salut_plugin_initialize (plugin, connection_manager,
- salut_protocol_new);
+ &callbacks);
}
}
diff --git a/src/plugin.c b/src/plugin.c
index 2f421cbf..4c1f7b05 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -125,13 +125,13 @@ salut_plugin_create_sidecar_finish (
void
salut_plugin_initialize (SalutPlugin *plugin,
TpBaseConnectionManager *connection_manager,
- SalutCreateProtocolImpl proto_ctor)
+ const SalutPluginInitializeCallbacks *callbacks)
{
SalutPluginInterface *iface = SALUT_PLUGIN_GET_INTERFACE (plugin);
SalutPluginInitializeImpl func = iface->initialize;
if (func != NULL)
- func (plugin, connection_manager, proto_ctor);
+ func (plugin, connection_manager, callbacks);
}
GPtrArray *