Mercurial > pidgin
diff plugins/mono/loader/mono.c @ 11980:67fbd2ff4c4e
[gaim-migrate @ 14273]
Mono cleanup patch from Eoin Coffey
First, I changed mono_loader_ to ml_, since I was
getting sick of typing mono_loader_ :-D
Moved the mono runtime init and deinit code out of
mono.c into ml_init and ml_uninit in mono-helper.c
Added api/Status.cs and loader/status-glue.c so the
.net api now knows very little (as in the 'id') of
statuses.
committer: Tailor Script <tailor@pidgin.im>
| author | Gary Kramlich <grim@reaperworld.com> |
|---|---|
| date | Sat, 05 Nov 2005 02:09:30 +0000 |
| parents | 565d2e437c04 |
| children | ecd33ffb0b0a |
line wrap: on
line diff
--- a/plugins/mono/loader/mono.c Sat Nov 05 01:57:00 2005 +0000 +++ b/plugins/mono/loader/mono.c Sat Nov 05 02:09:30 2005 +0000 @@ -36,7 +36,7 @@ char *file = plugin->path; - assm = mono_domain_assembly_open(mono_loader_get_domain(), file); + assm = mono_domain_assembly_open(ml_get_domain(), file); if (!assm) { return FALSE; @@ -44,23 +44,25 @@ gaim_debug(GAIM_DEBUG_INFO, "mono", "Probing plugin\n"); - if (mono_loader_is_api_dll(mono_assembly_get_image(assm))) { + if (ml_is_api_dll(mono_assembly_get_image(assm))) { gaim_debug(GAIM_DEBUG_INFO, "mono", "Found our GaimAPI.dll\n"); return FALSE; } info = g_new0(GaimPluginInfo, 1); mplug = g_new0(GaimMonoPlugin, 1); + + mplug->signal_data = NULL; mplug->assm = assm; - mplug->klass = mono_loader_find_plugin_class(mono_assembly_get_image(mplug->assm)); + mplug->klass = ml_find_plugin_class(mono_assembly_get_image(mplug->assm)); if (!mplug->klass) { gaim_debug(GAIM_DEBUG_ERROR, "mono", "no plugin class in \'%s\'\n", file); return FALSE; } - mplug->obj = mono_object_new(mono_loader_get_domain(), mplug->klass); + mplug->obj = mono_object_new(ml_get_domain(), mplug->klass); if (!mplug->obj) { gaim_debug(GAIM_DEBUG_ERROR, "mono", "obj not valid\n"); return FALSE; @@ -89,17 +91,17 @@ return FALSE; } - plugin_info = mono_loader_invoke(info_method, mplug->obj, NULL); + plugin_info = ml_invoke(info_method, mplug->obj, NULL); /* now that the methods are filled out we can populate the info struct with all the needed info */ - info->name = mono_loader_get_prop_string(plugin_info, "Name"); - info->version = mono_loader_get_prop_string(plugin_info, "Version"); - info->summary = mono_loader_get_prop_string(plugin_info, "Summary"); - info->description = mono_loader_get_prop_string(plugin_info, "Description"); - info->author = mono_loader_get_prop_string(plugin_info, "Author"); - info->homepage = mono_loader_get_prop_string(plugin_info, "Homepage"); + info->name = ml_get_prop_string(plugin_info, "Name"); + info->version = ml_get_prop_string(plugin_info, "Version"); + info->summary = ml_get_prop_string(plugin_info, "Summary"); + info->description = ml_get_prop_string(plugin_info, "Description"); + info->author = ml_get_prop_string(plugin_info, "Author"); + info->homepage = ml_get_prop_string(plugin_info, "Homepage"); info->magic = GAIM_PLUGIN_MAGIC; info->major_version = GAIM_MAJOR_VERSION; @@ -113,7 +115,7 @@ plugin->info = info; info->extra_info = mplug; - mono_loader_add_plugin(mplug); + ml_add_plugin(mplug); return gaim_plugin_register(plugin); } @@ -127,7 +129,7 @@ mplug = (GaimMonoPlugin*)plugin->info->extra_info; - mono_loader_invoke(mplug->load, mplug->obj, NULL); + ml_invoke(mplug->load, mplug->obj, NULL); return TRUE; } @@ -142,8 +144,10 @@ mplug = (GaimMonoPlugin*)plugin->info->extra_info; gaim_signals_disconnect_by_handle((gpointer)mplug->klass); + g_list_free(mplug->signal_data); + mplug->signal_data = NULL; - mono_loader_invoke(mplug->unload, mplug->obj, NULL); + ml_invoke(mplug->unload, mplug->obj, NULL); return TRUE; } @@ -156,7 +160,7 @@ mplug = (GaimMonoPlugin*)plugin->info->extra_info; - mono_loader_invoke(mplug->destroy, mplug->obj, NULL); + ml_invoke(mplug->destroy, mplug->obj, NULL); if (plugin->info) { g_free(plugin->info->name); @@ -182,7 +186,7 @@ *****************************************************************************/ static void plugin_destroy(GaimPlugin *plugin) { - mono_jit_cleanup(mono_loader_get_domain()); + ml_uninit(); } static GaimPluginLoaderInfo loader_info = @@ -222,12 +226,8 @@ static void init_plugin(GaimPlugin *plugin) { - MonoDomain *domain = mono_jit_init("gaim"); - - mono_loader_set_domain(domain); - - mono_loader_init_internal_calls(); - + ml_init(); + loader_info.exts = g_list_append(loader_info.exts, "dll"); }
