diff options
-rw-r--r-- | plugins/test.c | 6 | ||||
-rw-r--r-- | salut/plugin.h | 11 | ||||
-rw-r--r-- | src/plugin-loader.c | 7 | ||||
-rw-r--r-- | src/plugin.c | 4 |
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 * |